Создайте полностью отдельный процесс в linux через bash
Мне нужно выполнить script выполнить (bash или perl или php, any will do) другую команду, а затем выйти, а другая команда все еще запускается и выходит сама по себе. Я мог запланировать с помощью команды, но было любопытно, был ли более простой способ.
Ответы
Ответ 1
#!/bin/sh
your_cmd &
echo "started your_cmd, now exiting!"
Аналогичные конструкции существуют для perl и php, но в sh/ bash очень легко запустить другую команду в фоновом режиме и продолжить.
изменить
Очень хороший источник для общего манипулирования процессом - это все стартовые скрипты под /etc/init.d
. Они выполняют всевозможные аккуратные трюки, такие как отслеживание pids, выполнение основных команд start/stop/restart и т.д.
Ответ 2
Чтобы запустить команду в фоновом режиме, вы можете добавить '&' к команде.
Если вам нужна программа, прошедшая сеанс входа в систему, вы можете использовать nohup.
Посмотрите это обсуждение в разделе stackoverflow: как запустить команду в фоновом режиме...
Ответ 3
Обычный способ запуска команды и ее запуск при выходе из системы - это использовать nohup(1)
. nohup
не позволяет данной команде получать сигнал HUP при выходе оболочки. Вам также нужно запустить в фоновом режиме с помощью суффикса команды ampersand (&).
$ nohup some_command arg1 arg2 &
Ответ 4
&
?
#!/usr/bin/bash
# command1.sh: execute command2.sh and exit
command2.sh &
Ответ 5
Я не совсем уверен, что это то, что вы ищете, но вы можете выполнить фоновый процесс, выполняемый в оболочке, добавив символ амперсанда (&) в качестве последнего символа команды.
Итак, если у вас есть script, a.sh
и a.sh необходимо создать отдельный процесс, например, выполнить script b.sh, вы бы:
b.sh &
Ответ 6
Пока вы упомянули Perl:
fork || exec "ls";
... где "ls" - это вообще что-то. Повторяйте столько команд, сколько вам нужно выполнить.