Создайте полностью отдельный процесс в 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" - это вообще что-то. Повторяйте столько команд, сколько вам нужно выполнить.