авк,использование опции -v
для передачи переменных оболочки в переменные awk:
$ awk -v from="$FROM" -v to="$TO" 'from <= $1 && $1 <= to && /ERROR/' log.txt
2018-06-26 00:00:20,073 ERROR SAMPLE TEXT CONTENT
2018-06-26 17:37:20,073 ERROR SAMPLE TEXT CONTENT
2018-06-28 00:00:20,073 ERROR SAMPLE TEXT CONTENT
2018-06-29 00:00:20,073 ERROR SAMPLE TEXT CONTENT
2018-07-01 11:00:20,073 ERROR SAMPLE TEXT CONTENT
2018-07-02 00:00:20,073 ERROR SAMPLE TEXT CONTENT
Добавление :«RemainAfterExit=yes» в раздел [Service] позволит экрану оставаться открытым.
Проблема, вероятно, exec bash
в конце. bash
не получает входных данных и, следовательно, завершает работу. Если вы выполняете exec любой оболочки, это делает то же самое :, не остается ввода, поэтому оболочка завершает работу.
Но, что более важно, :зачем использовать screen
? В чем тут преимущество?
В чем проблема просто позволить systemd выполнить перезапуск?
[Unit]
Description=Start blogpatcher server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/bash /home/blogpatc/script/blogpatcher.sh
TimeoutStartSec=90
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
и
#!/bin/bash
cd /home/blogpatc/server/
java -cp bloghelper_artifact_main.jar com.aperico.bloghelper.server.ThesaurusServer
Systemd имеет множество дополнительных параметров и возможностей. Вы можете прочитать о них -. Например, если сценарий используется только для установки рабочего каталога (, а не в качестве начала для более сложного сценария запуска -, как я предполагал ), вы можете посмотреть на WorkingDirectory
, поскольку JdeBP предложил в комментариях.
Если вы настаиваете на том, чтобы screen
использовалось в сценарии запуска -up, тогда служебная часть вашего юнит-файла, вероятно, должна выглядеть примерно так:
[Service]
Type=simple
Restart=on-failure
WorkingDirectory=/home/blogpatc/server/
RestartSec=3
ExecStart=/usr/bin/screen -L -dm java -cp bloghelper_artifact_main.jar com.aperico.bloghelper.server.ThesaurusServer
или исследуйте Type=forking
вместо Type=simple
.