Запуск процессов после выхода из системы
Иногда вам нужно, чтобы процесс продолжал работать даже после выхода из терминала. Команда nohup
позволяет запускать команды, которые будут продолжать выполняться даже после выхода из оболочки.
Создадим скрипт, который будет работать в течение длительного времени:
cd ~/project
nano persistent-task.sh
Добавьте следующее содержимое:
#!/bin/bash
## This script runs for a very long time
echo "Starting persistent task at $(date)" > persistent-output.log
for i in {1..100}; do
echo "Iteration $i at $(date)" >> persistent-output.log
sleep 10
done
echo "Persistent task completed at $(date)" >> persistent-output.log
Сохраните и выйдите из nano, затем сделайте скрипт исполняемым:
chmod +x persistent-task.sh
Теперь запустите его с помощью nohup
и отправьте в фон:
nohup ./persistent-task.sh &
Вы увидите вывод, похожий на следующий:
[1] 5678
nohup: ignoring input and appending output to 'nohup.out'
Это означает, что процесс запущен в фоновом режиме и будет продолжать работать даже после выхода из системы. Вывод, который обычно отправляется в терминал, перенаправляется в файл nohup.out
.
Вы можете проверить, запущен ли процесс:
ps aux | grep persistent-task.sh
И вы можете просмотреть файл вывода:
cat persistent-output.log
Вывод показывает время начала и итерации долгоживущего задания.
Команда disown
Другой способ сохранить запущенными процессы после выхода из системы - использовать команду disown
. Сначала запустите процесс в фоновом режиме:
cd ~/project
./persistent-task.sh &
Затем используйте disown
, чтобы отвязать его от терминала:
disown %1
Теперь этот процесс будет продолжать работать даже после закрытия терминала.
Эти команды являются важными при выполнении задач на удаленных серверах, где вам нужно, чтобы процессы продолжали работать после отключения.