LINUX.ORG.RU

screen, tmux, вроде еще dtach .

Kroz ★★★★★
()
Ответ на: комментарий от generator

Открываю я эмулятор терминала, из него запускаю скрипт. Скрипт останавливает иксы, производит магические манипуляции и снова запускает иксы.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от kostik87

Ну, screen — не такой уж и плохой вариант. Но может быть, есть лучше.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от devl547

Если шелл, то да, по любому терминал нужен (tmux, screen, ...).

nohup со скриптом сработает только:

#!/bin/sh

while [ 1 ]; do
        sleep 1
        date
done
(nohup ./supershell.sh > out.txt &)
kill shell...
tail -f out.txt

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от backbone

Ну, шелл-то по-любому нужен. Другое дело, что он не интерактивный.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от generator

Перезапуск иксов как бы предусматривает, что первый шелл умрёт. А в твоём случае если умрёт первый, то умрёт и второй.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Не умрёт. В первом терминале:

$ ./test.sh &
[1] 10246
$
Во втором:
$ ps -e -o pid,ppid,args | grep [t]est
10246 10171 /bin/bash ./test.sh
$
Во втором после закрытия первого:
$ ps -e -o pid,ppid,args | grep [t]est
10246     1 /bin/bash ./test.sh
$
ppid стал равен 1.

generator ★★★
()
Ответ на: комментарий от generator

Хммм, у меня это так не работает.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Debian. gnome-terminal. Почему не работает? Меня всегда учили что если parent процесс умирает, то все child подхватываются инитом. Как-то так.

generator ★★★
()
Ответ на: комментарий от devl547

ну и? bash увидел в /dev/null EOF, и закончился.

minix ~ # nohup bash -c script.sh &
MyTrooName ★★★★★
()

может ( script & )

anonymous
()

Надёжнее всего через setsid(1) (из util-linux).

ABW ★★★★★
()
Ответ на: комментарий от CYB3R

Перезапуск иксов как бы предусматривает, что первый шелл умрёт

Почему бы просто не заюзать Xnest?

iVS ★★★★★
()
Ответ на: комментарий от iVS

Потому, что цели совсем другие.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от generator

Yo dawg so i heard you like shell so we put shell in your shell so you can shell while you shell.

sT331h0rs3 ★★★★★
()
#!/bin/zsh
program-to-run &!

В баше надо будет как-то типа:

#!/bin/bash
nohup program-to-run &
Или можно при помощи shopt изменить опцию huponexit. Но я сам не пробовал.

Ну или screen или tmux.

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 2)
Ответ на: комментарий от generator

Меня всегда учили что если parent процесс умирает, то все child подхватываются инитом. Как-то так.

Проблема в том, что когда виртуальный терминал умирает, он посылает шеллу SIGHUP. Шелл по умолчанию рассылает SIGHUP всем детям. Дети от этого по умолчанию умирают.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Понятно, спасибо. Тогда другой вопрос. Зачем нужен nohup, если у меня и просто с & дочерний процесс не убивается?

generator ★★★
()
Ответ на: комментарий от generator

Ты так и не ответил, что это за терминал такой, который никого с собой не уносит, когда сам умирает.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Нет, он выше ответил, что у него Debian и gnome-terminal. Но почему он никого за собой не уносит, я не знаю.

proud_anon ★★★★★
()

Казалось бы, надо знать всего две команды. «tmux new» и «tmux attach». Но линуксоиды, поклоняющиеся своему GNU bash до этого ещё не дошли. А в цивилизованных системах тем временем эти команды прекрасно известны и давно используются.

Deleted
()
Ответ на: комментарий от generator

А, да я не заметил. У меня тот же debian, тот же gnome-terminal, но всё работает, как положено.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.