Запуск процесса в фоновом режиме и закрытие сеанса ssh
Есть много способов сделать это:
1. nohup
команда
Вы можете использовать команду nohup
для выполнения команд после выхода из приглашения оболочки.
Пример:
$ nohup java -jar mywebservice.jar > /path/to/webservice/logs/mylogfile.txt &
## exit from shell or close the terminal ##
$ exit
2. Команда disown
bash
Другой вариант - использовать команду disown
следующим образом:
Пример:
$ java -jar mywebservice.jar > /path/to/webservice/logs/mylogfile.txt &
[1] 10685
$ disown 10685
$ ps
PID TTY TIME CMD
10685 pts/0 00:00:00 wget
10687 pts/0 00:00:00 bash
10708 pts/0 00:00:00 ps
$ logout
3. Команда screen
Для этой цели также можно использовать команду screen
.
Это можно сделать следующим образом:
# store the 3 lines to match in shell variables
line_1="log4j.appender.DRFA=org.apache.log4j.RollingFileAppender"
line_2="log4j.appender.DRFA.MaxBackupIndex=100"
line_3="log4j.appender.DRFA.MaxFileSize=10MB"
# function that escapes it's first argument to make it palatable
# for use in `sed` editor's `s///` command's left-hand side argument
esc() {
printf '%s\n' "$1" | sed -e 's:[][\/.^$*]:\\&:g'
}
# escape the lines
line_1_esc=$(esc "$line_1")
line_2_esc=$(esc "$line_2")
line_3_esc=$(esc "$line_3")
# invoke `sed` and fill up the pattern space with 4 lines (rather than the default 1)
# then apply the regex to detect the presence of the lines 1/2/3.
sed -e '
1N;2N;$!N
'"/^$line_1_esc\n$line_2_esc\n$line_3_esc\n.*DatePattern/"'!D
:a;n;$!ba
' input.file
Основываясь на предположении, что порядок имен не имеет значения, и они всегда встречаются в пачке по три, попробуйте
awk '
BEGIN {INSTXT = "trump" ORS "bush" ORS "putin"
for (n = split (INSTXT, T, ORS); n; n--) PRES[T[n]]
}
!(LAST in PRES) &&
/HOTEL/ {print INSTXT
}
{LAST = $0
}
1
' file