Залишити скрипт bash, який працює на віддаленому терміналі, не ввійшовши в систему?


14

У мене є сценарій bash, на який потрібно кілька годин. Хоча він працює, я хотів би зробити інші речі, які можуть включати вихід із мережі або відключення від Інтернету (мій сценарій виконує мережеві тести на різних комп’ютерах).

Я розумію, що є команда, яка дозволила б мені запускати свої тести з віддаленого терміналу та виходу з терміналу, поки він працює. Хтось знає, що це за команда?

Відповіді:


17

Команда, яку ви шукаєте, - це nohup.

Існує також screenтака ситуація, коли ви хочете щось залишити, але повертайтеся та інтерактивно вставте пізніше.

nohupпростіше, якщо команда не очікує введення користувача після запуску, і screenкраще, якщо ви хочете мати можливість запускати програму в інтерактивному режимі.


Я переглянув nohup зараз і, мабуть, є проблеми з введенням і виведенням, які можуть спричинити зависання сценарію. Я також побачив щось про екрані, що вражає мене як те, що я читав раніше. Чи знаєте ви, як використовувати будь-яке з них?
Ritwik Bose

1
nohup - це коли сценарій не очікує введення користувача - він зберігає весь вихід у файл. Екран - це коли ви хочете щось залишити, але повертайтеся та інтерактивно вставте пізніше. nohup простіше, якщо команда очікує, що користувачам не буде введено даних після запуску, а екран краще, якщо ви хочете вміло запускати програму в інтерактивному режимі.
Джастін Сміт

Ага знайшов. Для екрана це ctrl-A d для від'єднання та -r + pid для повторного вкладення.
Рітвік Бозе

Гарна відповідь. Ви повинні додати коментар на екрані до вашої відповіді, щоб він виділявся більше.
DaveParillo

1

Я використовую nohupдля цього. У моєму випадку у мене був сценарій python з ім'ям, action.py я запустив сценарій на віддалений сервер, nohup python action.py & і тоді я закрив би термінал. Пізніше, коли він закінчиться, ви можете побачити всі результати з процесу, в nohup.outякому буде створено в тому ж каталозі, що і action.py. Якщо файл вже існує, до нього буде додано додатковий висновок.

Єдиний корч - це не знати, коли сценарій запустив свій шлях, тому в моєму випадку мені довелося після завершення відправити мені електронний лист. Сподіваюся, це комусь допомогло!


0

Що станеться, якщо ви забули додати nohupкоманду на початку вашої команди?

Скажемо, що ви виконали таку довгу команду:

Початок виходу довгої команди

Це називається так ls -Ral /, як передбачається, щоб перелічити всі файли та всі папки, включаючи приховані, з довгим форматом, що починається з ретрансляційної папки. Це може зайняти деякий час.

Просто натисніть ctrl+ Z.

Припинення довгої команди

Як це повернути?

Команда повернути його на передній план є fg.

Повернення команди назад

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