Может быть что-то Как:
awk '!NF || /%/ {printf "%s", (NR > 1 ? "\n" : "") $0; sep = "\n"; next}
{printf "%s", sep $0; sep = " "}
END {if (NR) print ""}' < file.in > file.out
Выполните эту команду в терминале,
/bin/sleep 1000 &
В другом терминале проверьте, запущен ли процесс:
pgrep -fa sleep
.
(процесс показан)
Закройте первый терминал или выйдите из системы. Проверьте еще раз:
pgrep -fa sleep
(ничего не показано)
Повторите шаги, добавив nohup
к первой команде:
nohup /bin/sleep 1000 &
Вы увидите, что вторая проверка показывает, что процесс все еще запущен.
Вот один пример. Введите это:
nohup find -size +100k > log.txt
и log.txt
и logout. Затем снова войдите в систему и проверьте файл log.txt.
Больше информации: Команда nohup для Linux и Unix
Я нашел решение для удаленного входа в систему:
Если терминал, с которого был запущен процесс с nohup, и если терминал был убит, то процесс также продолжит работу. Однако, если вы просто выйдете из системы с помощью exit
или Ctrl + D , то этого не произойдет, но выход из системы также будет работать, если вы вышли из системы. графический вход.
nohup не "убивает" (предотвращает зависание сигнала, так же известного как SIGHUP и сигнал человека 7) процесс, который пытается записать на терминал, когда терминала нет.
Когда процесс не пишет на терминал, ему не нужен nohup - он будет жить до тех пор, пока не завершится или не будет закончен. Однако многие процессы пытаются писать на терминал во время выполнения, и если терминала нет (например, из-за выхода из системы), они бросают сигнал "зависание" и погибают. nohup предотвращает это, но вы можете предотвратить это вручную, перенаправив все выходные данные в файл и в фоновом режиме ( команда &> file &).
Просто автоматизируйте этот процесс за вас.
nohup также предотвращает убийство, когда по той же причине отсутствует ввод с терминала, но это использование гораздо реже (nohup перенаправляет /dev/null на ввод, вместо терминального/стандартного ввода)
.