Возможно ли захватить код выхода из запущенного процесса, например, ExecStart
в системном сервисном блоке ? Я хочу проверить, нормально ли завершился процесс или произошла ошибка.
После прочтения документов systemd.service и systemd.exec я подумал, что $SERVICE_RESULT
$EXIT_CODE
и / или $EXIT_STATUS
могут помочь. Но безрезультатно.
Данный тестовый блок:
[Unit]
Description=Testing Run Order
[Service]
Type=simple
Environment=HELLO=WORLD
ExecStartPre=/bin/echo [StartPre] $MAINPID $SERVICE_RESULT $EXIT_CODE $EXIT_STATUS
ExecStartPost=/bin/echo [StartPost] $MAINPID $SERVICE_RESULT $EXIT_CODE $EXIT_STATUS
ExecStart=/bin/sleep 2
ExecStop=/bin/env
ExecStop=/bin/echo [Stop] $MAINPID $SERVICE_RESULT $EXIT_CODE $EXIT_STATUS
ExecStopPost=/bin/echo [StopPost] $MAINPID $SERVICE_RESULT $EXIT_CODE $EXIT_STATUS
Я получаю следующий вывод:
Aug 30 08:37:26 localhost.localdomain systemd[1]: Starting Testing Run Order...
Aug 30 08:37:26 localhost.localdomain echo[3458]: [StartPre]
Aug 30 08:37:26 localhost.localdomain systemd[1]: Started Testing service metrics.
Aug 30 08:37:26 localhost.localdomain echo[3460]: [StartPost] 3459
Aug 30 08:37:27 localhost.localdomain env[3465]: LANG=en_US.UTF-8
Aug 30 08:37:27 localhost.localdomain env[3465]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Aug 30 08:37:27 localhost.localdomain env[3465]: HELLO=WORLD
Aug 30 08:37:27 localhost.localdomain echo[3467]: [Stop]
Aug 30 08:37:27 localhost.localdomain echo[3469]: [StopPost]
Так ничего. В настоящее время я застрял с systemd 219
(+ PAM + AUDIT + SELINUX + IMA -APPARMOR + SMACK + SYSVINIT + UTMP + LIBCRYPTSETUP + GCRYPT + GNUTLS + ACL + XZ -LZ4 -SECCOMP + BLKID + ELFUTILS + KMOD + IDN) в Centos7.