У Вас есть сервер SSH в этой системе? Если да, можно использовать его для соединения с системой с помощью sftp протокол, который является в основном командами FTP по SSH. И нет никакой потребности в другой пользовательской базе данных, просто снова используйте тот, который Вы используете для SSH. Как клиент SFTP, мне нравится filezilla.
В противном случае vsftpd (превосходный FTP-сервер) может быть настроен для включения FTP по SSL. Вы будете нуждаться в самоподписанном сертификате и изменять несколько параметров в vsftpd.conf (таких как ssl_enable=YES).
Кроме того, если Вы знаете, что соединитесь с этим FTP-сервером от одного IP-адреса только, Вы могли бы добавить правило брандмауэра (iptables/netfilter) для разрешения соединений от этого IP только.
Основная цель 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 ,
В общем случае не рекомендуется выходить из сценария, пока в нем все еще работают процессы в фоновом режиме.
Примените принцип 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
.