Выполните часть оболочки сценария в nohup

У Вас есть сервер SSH в этой системе? Если да, можно использовать его для соединения с системой с помощью sftp протокол, который является в основном командами FTP по SSH. И нет никакой потребности в другой пользовательской базе данных, просто снова используйте тот, который Вы используете для SSH. Как клиент SFTP, мне нравится filezilla.

В противном случае vsftpd (превосходный FTP-сервер) может быть настроен для включения FTP по SSL. Вы будете нуждаться в самоподписанном сертификате и изменять несколько параметров в vsftpd.conf (таких как ssl_enable=YES).

Кроме того, если Вы знаете, что соединитесь с этим FTP-сервером от одного IP-адреса только, Вы могли бы добавить правило брандмауэра (iptables/netfilter) для разрешения соединений от этого IP только.

0
задан 21 August 2012 в 16:00
2 ответа

Основная цель nohup - изолировать программы от сигнала HUP , который обычно принимается при отключении управляющего TTY (например, из-за

Вы можете сделать то же самое, используя встроенную команду оболочки trap :

$ help trap
Trap signals and other events.

Defines and activates handlers to be run when the shell receives signals
or other conditions.

ARG is a command to be read and executed when the shell receives the
signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC
is supplied) or `-', each specified signal is reset to its original
value.  If ARG is the null string each SIGNAL_SPEC is ignored by the
shell and by the commands it invokes.

Таким образом, вы можете использовать команду trap , чтобы изолировать части вашего скрипта от сигнал HUP путем передачи пустой строки в качестве действия. Например:

#!/bin/sh

command_1
script2.sh

# Starting ignoring HUP signal
trap "" HUP

script3.sh
...
(tests & loops, etc)
script4.sh

# Resume normal HUP handling.
trap - HUP

script5.sh

Вы, вероятно, захотите убедиться, что вывод вашего сценария направляется в файл (в противном случае вы потеряете любой вывод после отключения, даже если сценарий продолжит работу).

Вы также можете захотеть рассмотрите возможность простого запуска сценария под управлением screen ,

9
ответ дан 4 December 2019 в 11:01

В общем случае не рекомендуется выходить из сценария, пока в нем все еще работают процессы в фоновом режиме.

Примените принцип KISS или «Сохраняйте простоту, Сэм» (для различных значений Сэма). Вы понимаете nohup, просто используйте его.

Если вы хотите script3.sh - script5.sh и все условные выражения и циклы между ними для выполнения до завершения после того, как ваш скрипт вернется в командную строку, поместите этот раздел скрипта в отдельный файл.

Теперь у вас есть два скрипта. Сначала сценарий script0.sh

#!/bin/bash

command_1
script2.sh
nohup script35.sh &
exit

script35.sh:

#! /bin/bash
script3.sh
...
(tests & loops, etc)
script4.sh
script5.sh

Если вы хотите запускать сценарий из cron, зачем беспокоиться ? Если вы начинаете из сеанса оболочки, следуйте совету @larsks и используйте эмулятор / мультиплексор терминала, например screen или tmux .

2
ответ дан 4 December 2019 в 11:01

Теги

Похожие вопросы