1

Я знаю о nohup и он не будет делать то, что я хочу:

Пример:

$ nohup sleep 600 2>/dev/null >/dev/null </dev/null&
[1] 21844
$ ps -ef | fgrep -e 'sleep
> TTY'
UID        PID  PPID  C STIME TTY          TIME CMD
me       21844 19313  0 09:37 pts/9    00:00:00 sleep 600

Как вы можете видеть, сон все еще имеет pts/9 в качестве управляющего терминала. Я не хочу, чтобы у него был какой-либо управляющий терминал. Частично потому, что программа, которую я хочу использовать (это не sleep если вы не догадались), пытается открыть управляющий терминал, чтобы задать мне вопросы, и я хочу посмотреть, как он себя ведет, если не может. Как мне это сделать?

3 ответа3

1

Утилита setsid в Linux может сделать это. На Fedora это часть util-linux . Это тот же пакет, который содержит такие вещи, как mount , mkfs , /usr/bin/kill и другие подобные вещи.

1

Это решение FreeBSD, но, возможно, аналогичная методика подойдет для вашей ОС.

Я знаю, что cron не совсем командная строка, но если у вас есть определенный список команд, который вы хотите запустить, cron может это сделать. Вы, вероятно, захотите избежать повторного запуска задания cron, возможно, создав оболочку вокруг желаемого списка команд, что-то вроде:

#!/bin/sh
[ -f /tmp/my-semaphore-file ] || {
  touch /tmp/my-semaphore-file
  my_command_stack > /dev/null 2>&1
}

Возможно, он не предназначен для производственного использования, но если вы просто хотите проверить, как работает ваш стек команд без управляющего терминала, он это сделает. Оболочка не позволит cron запустить команду снова, пока вы:

rm /tmp/my-semaphore-file

at(1) также является опцией и является "почти" решением командной строки:

echo 'my_command_stack > /dev/null 2>&1' | at now+1 minute
0

Вы также должны использовать disown чтобы отделить процесс от tty.

https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and

Попробуйте запустить nohup sleep 600 2>/dev/null >/dev/null </dev/null& disown и посмотрите, даст ли это желаемый результат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .