Чи буде сценарій Perl продовжувати працювати після виходу з облікового запису користувача?


3

Я запустив сценарій Perl з терміналу, який працює у фоновому режимі:

>perl myScript.pl &

Якщо я вийду із системи, чи зупинить це запуск мого сценарію?

Дякую!

Відповіді:


4

Так, це мертво легко перевірити. Напишіть сценарій perl, який додає дату до файлу щохвилини та запустіть її у фоновому режимі. Вийдіть із системи, зачекайте 5 хвилин, увійдіть, перевіріть 5 записів, що відповідають часу виходу з системи. Щоб працювати в майбутньому (занадто пізно, якщо він вже працює), використовуйте nohup, як пояснено в іншій відповіді. Ви можете фоновий сценарій переднього плану після його запуску (CTRL-Z), але ви не можете його виконувати лише під час виконання


Дякую за пропозицію, але річ у моєму сценарії працює давно, і я не хотів зупинятися на тестуванні. Я не мав ідеї, що збираюся запустити так довго, але я просто провів деякі розрахунки, і, схоже, це буде приблизно 90-годинна робота!
Аллен Лю

3
Якщо у вас виникли сумніви, тоді дотримуйтесь а) заставки, захищеної паролем, а не виходу із системи, якщо проблема полягає у безпеці, або б) увімкніть швидке перемикання користувачів, якщо хтось інший, який потребує використання комп’ютера - це проблема - жодне з них не вплине на це. .
stuff

6

На додаток до відповіді @ stuffe, якщо ви увійдете в систему через sshі запустите свою команду, вона загине, коли ви закриєте з'єднання. Отже, якби ви були вдома ssh, зайшли в робочу станцію свого офісу і виконали свою perl myScript.pl &команду, вона загинула б, коли ви exitперейшли з sshз'єднання.

Щоб уникнути цієї проблеми, ви хочете скористатися nohupкомандою, яка починається з днів телетайпу і позначає "без призупинення" --- по суті це призводить до того, що команда ігнорує сигнал POSIX HUP (зависання). Він використовується як:

nohup perl myScript.pl &

Це працюватиме на робочій станції офісу навіть після відключення / виходу з домашньої машини.


2
дійсно, nohup - це відповідь!
stuff

Це чудово. Дякую. Виконавши точно так, як описано, я отримую повідомлення "nohup: ігнорування введення та додавання виводу до` nohup.out '", як очікувалося, але я не бачу підказок Unix . Виходячи з вашої відповіді, мабуть, не має значення, якщо зв’язок втрачено / закрито. Але скажіть, якщо я хочу використовувати те саме вікно командного рядка для інших дій, чи є спосіб дозволити командному рядку з'являтися підказки?
Девід К.

Я думаю, я це зрозумів: я набрав "bg", щоб дозволити працювати у фоновому режимі. Щоб перевірити стан, я набрав "завдання".
Девід К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.