Если Вы используете экран, чтобы выполнить процесс как корень, остерегаться возможности нападений расширения полномочий. Если Ваша собственная учетная запись поставится под угрозу так или иначе, будет прямой способ принять весь сервер.
, Если бы этот процесс должен регулярно выполняться и у Вас есть достаточный доступ на сервере, более оптимальный вариант состоял бы в том, чтобы использовать крон выполнение задание. Вы могли также использовать init.d (супер демон) для запуска процесса в фоновом режиме, и это может завершиться, как только это сделано.
Как другие отметили, для выполнения процесса в фоновом режиме так, чтобы можно было разъединиться от сессии SSH, у Вас должен быть фоновый процесс, правильно разъединяют себя с его терминалом управления - который является pseudo-tty, который использует сессия SSH.
можно найти информацию о процессах daemonizing в книгах, таких как "Программа Передовой сети Stevens, Vol 1, 3-й Edn" или "Усовершенствованное Программирование Unix Rochkind".
я недавно (в последних годах) должен был иметь дело с упорной программой, которая не сделала самого daemonize правильно. Я закончил тем, что имел дело с этим путем создания универсальной daemonizing программы - подобный nohup, но с большим количеством доступных средств управления.
Usage: daemonize [-abchptxV][-d dir][-e err][-i in][-o out][-s sigs][-k fds][-m umask] -- command [args...]
-V print version and exit
-a output files in append mode (O_APPEND)
-b both output and error go to output file
-c create output files (O_CREAT)
-d dir change to given directory
-e file error file (standard error - /dev/null)
-h print help and exit
-i file input file (standard input - /dev/null)
-k fd-list keep file descriptors listed open
-m umask set umask (octal)
-o file output file (standard output - /dev/null)
-s sig-list ignore signal numbers
-t truncate output files (O_TRUNC)
-p print daemon PID on original stdout
-x output files must be new (O_EXCL)
двойной тире является дополнительным в системах, не используя GNU getopt () функция; это необходимо (или необходимо определить POSIXLY_CORRECT в среде) на Linux и т.д. Начиная с работ двойного тире везде, лучше использовать его.
можно все еще связаться со мной (firstname, отмечают точкой lastname в com точки Gmail), если Вы хотите источник для daemonize
.
Однако код теперь (наконец) доступен на GitHub в моем SOQ (Вопросы о Переполнении стека) репозиторий как файл daemonize-1.10.tgz
в эти пакеты подкаталог.
Лично, мне нравится 'пакетная' команда.
$ batch
> mycommand -x arg1 -y arg2 -z arg3
> ^D
Это наполняет его в к фону, и затем отправляет результаты по почте Вам. Это - часть крона.
nohup blah &
Замена Ваше имя процесса вздора!
Когда сеанс закрыт, процесс получает сигнал SIGHUP, который это, по-видимому, не ловит. Можно использовать эти nohup
команда при запуске процесса или удара встроенная команда disown -h
после запуска процесса для предотвращения этого:
> help disown
disown: disown [-h] [-ar] [jobspec ...]
By default, removes each JOBSPEC argument from the table of active jobs.
If the -h option is given, the job is not removed from the table, but is
marked so that SIGHUP is not sent to the job if the shell receives a
SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all
jobs from the job table; the -r option means to remove only running jobs.
Я рекомендовал бы использовать Экран GNU. Это позволяет Вам разъединяться с сервера, в то время как все Ваши процессы продолжают работать. Я не знаю, как я жил без него, прежде чем я знал, что это существовало.
Экран Use. Это очень просто в использовании и работает как vnc на терминалы. http://www.bangmoney.org/presentations/screen.html
Nohup позволяет клиентскому процессу не быть уничтоженным, если родительский процесс уничтожается для аргумента, когда Вы выходите из системы. Еще лучше все еще используйте:
nohup /bin/sh -c "echo \$\$ > $pidfile; exec $FOO_BIN $FOO_CONFIG " > /dev/null
Nohup делает процесс, который Вы запускаете неуязвимый для завершения, которое Ваша сессия SSH и ее дочерние процессы являются уничтожением на Вас выходить из системы. Команда, которую я дал, предоставляет Вам способ, которым можно сохранить изодромное с предварением из приложения в изодромном с предварением файле так, чтобы Вы могли correcly уничтожить его позже и позволили процессу бежать за Вами, вышли из системы.