порождает совершенно отдельный процесс в Linux через Bash - PullRequest
14 голосов
/ 28 апреля 2010

Мне нужно, чтобы скрипт выполнил (bash или perl или php, любая подойдет) другую команду и затем завершил работу, в то время как другая команда все еще выполняется и завершается самостоятельно. Я мог планировать через по команде, но было любопытно, если бы был более легкий путь.

Ответы [ 6 ]

24 голосов
/ 28 апреля 2010
#!/bin/sh

your_cmd &

echo "started your_cmd, now exiting!"

Подобные конструкции существуют для perl и php, но в sh / bash очень просто запустить другую команду в фоновом режиме и продолжить.

редактировать

Очень хорошим источником для общего управления процессами являются все сценарии запуска под /etc/init.d. Они выполняют всевозможные хитрые трюки, такие как отслеживание пидов, выполнение основных команд запуска / остановки / перезапуска и т. Д.

14 голосов
/ 28 апреля 2010

Чтобы выполнить команду в фоновом режиме, вы можете добавить к команде знак «&».

Если вам нужно, чтобы программа продолжалась после вашего сеанса входа, вы можете использовать nohup .

Смотрите подобное обсуждение в стеке: как запустить команду в фоновом режиме ...

5 голосов
/ 29 апреля 2010

Обычный способ запустить команду и заставить ее работать при выходе из системы - это использовать nohup(1). nohup предотвращает получение данной командой сигнала HUP при выходе из оболочки. Вам также нужно работать в фоновом режиме с суффиксом команды амперсанда (&).

$ nohup some_command arg1 arg2 &
4 голосов
/ 28 апреля 2010

Я не совсем уверен, что это то, что вы ищете, но вы можете создать фон для процесса, выполняемого в оболочке, добавив символ амперсанда (&) в качестве последнего символа команды.

Так что если у вас есть скрипт, a.sh

и a.sh должен порождать отдельный процесс, как, скажем, выполнить скрипт b.sh, вы бы:

b.sh &
4 голосов
/ 28 апреля 2010

& * * 1002

    #!/usr/bin/bash
    # command1.sh: execute command2.sh and exit
    command2.sh &
3 голосов
/ 28 апреля 2010

Пока вы упомянули Perl:

fork || exec "ls";

... где "ls" это вообще что-нибудь. Повторите для столько команд, сколько вам нужно, чтобы выстрелить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...