Задать вопрос

Как защитить процесс от прерывания при выходе из системы?

Доброго времени суток!
Переформулировал вопрос, ибо было много текста:
Делаю лаб. работу по Юниксу - "управление процессами"

Запускаю скрипт:
$sh pr1
while((++i)); do echo $i » file.txt; sleep 1; done

командой pr1 & перевожу процесс в фоновый режим

ps -l показывает данный процесс с TTY pts/5:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
1 S 11007 16359 16320 0 80 0 - 1735 - pts/5 00:00:00 bash

Далее перезахожу в систему, (по-идее процесс должен умереть, так же?), ввожу опять ps -l
вижу, что процесса 16359 нет, а я подключен уже с pts/7 (ну или с любого другого).
ps -u username - таким образом пропавший процесс находится, запущенный и работающий от старого pts/5 TTY.

Если я не запускаю фоновых процессов, а просто подряд перезахожу в систему, подключаюсь все время к одному TTY.
Собственно, вопрос:
По заданию я должен "перезайти в систему", посмотреть что этим я убил свой фоновый процесс, а потом сделать для него защиту от прерываний (при выходе из системы). Почему процесс не умирает, я же не задаю nohup? Почему меня кидает на новый TTY? Что делаю не так?)
  • Вопрос задан
  • 1011 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@RainJa Автор вопроса
C nohup разобрался. Проверив вывод nohup.out, увидел там кучу ошибок.
Т.к. при создании процедуры использовался расширенный синтаксис, sh его не знает, необходимо в начало текста процедуры добавить ссылку на bash:

#!/bin/bash
while ((++i))
do
echo $i » file.txt
sleep 1
done


Ну и если я делаю просто pr1 &, то процесс переходит в фоновый режим, выходом из системы его не убить - разве что убив оболочку (наверное :))... Если запускать с nohup, при "перелогине" PPID =1 (init), TTY = ?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
abler98
@abler98
Software Engineer
Если я Вас правильно понял, то можно использовать screen
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы