У меня есть две основные службы systemd. Один - isrsrv.service, а другой - isrsrv-tmpfs.service. Оба они полностью похожи и делают одно и то же, но tmpfs использует ramdisk. Это значит, что у меня или у кого-то еще есть выбор, что и как его запускать.
isrsrv.service
[Unit]
Description=IsRSrv Server Service
After=network.target
Conflicts=isrsrv-tmpfs.service
StartLimitBurst=3
StartLimitIntervalSec=300
StartLimitAction=none
OnFailure=isrsrv-send-email.service
[Service]
Type=forking
WorkingDirectory=/home/isr-creative/server/drive_c/Games/InterstellarRift/Build/
ExecStart=/usr/bin/tmux -f /home/isr-creative/scripts/isrsrv-tmux.conf -L %u-tmux.sock new-session -s IsRSrv -d env WINEARCH=win32 WINEDEBUG=-all WINEPREFIX=/home/isr-creative/server wineconsole --backend=curses /home/isr-creative/server/drive_c/Games/InterstellarRift/Build/IR.exe -server -inline -linux -nossl
ExecStop=/usr/bin/tmux -L %u-tmux.sock send-keys -t IsRSrv.0 'quittimer 15 server shutting down in 15 seconds' ENTER
ExecStop=/usr/bin/sleep 20
ExecStop=/usr/bin/env WINEARCH=win32 WINEDEBUG=-all WINEPREFIX=/home/isr-creative/server /usr/bin/wineserver -k
ExecStop=/usr/bin/sleep 10
TimeoutStartSec=infinity
TimeoutStopSec=120
RestartSec=10
Restart=on-failure
[Install]
WantedBy=default.target
isrsrv-tmpfs.service
[Unit]
Description=IsRSrv TmpFs Server Service
Requires=isrsrv-mkdir-tmpfs.service
After=network.target mnt-tmpfs.mount isrsrv-mkdir-tmpfs.service
Conflicts=isrsrv.service
StartLimitBurst=3
StartLimitIntervalSec=300
StartLimitAction=none
OnFailure=isrsrv-send-email.service
[Service]
Type=forking
WorkingDirectory=/mnt/tmpfs/isr-creative/drive_c/Games/InterstellarRift/Build/
ExecStartPre=/usr/bin/rsync -av --info=progress2 /home/isr-creative/server/ /mnt/tmpfs/isr-creative
ExecStart=/usr/bin/tmux -f /home/isr-creative/scripts/isrsrv-tmux.conf -L %u-tmux.sock new-session -s IsRSrv -d env WINEARCH=win32 WINEDEBUG=-all WINEPREFIX=/mnt/tmpfs/isr-creative wineconsole --backend=curses /mnt/tmpfs/isr-creative/drive_c/Games/InterstellarRift/Build/IR.exe -server -inline -linux -nossl
ExecStop=/usr/bin/tmux -L %u-tmux.sock send-keys -t IsRSrv.0 'quittimer 15 server shutting down in 15 seconds' ENTER
ExecStop=/usr/bin/sleep 20
ExecStop=/usr/bin/env WINEARCH=win32 WINEDEBUG=-all WINEPREFIX=/mnt/tmpfs/isr-creative /usr/bin/wineserver -k
ExecStop=/usr/bin/sleep 10
ExecStop=/usr/bin/rsync -av --info=progress2 /mnt/tmpfs/isr-creative/ /home/isr-creative/server
TimeoutStartSec=infinity
TimeoutStopSec=120
RestartSec=10
Restart=on-failure
[Install]
WantedBy=default.target
Теперь я хочу создать третью службу (назовем ее вторичной) для сценария bash с бесконечным циклом while для прослушивания консоли сервера (я понял это и работает), но как я могу запустить его после одного или другую первичную службу и перезапустите / остановите ее, если основная служба не работает, но если сценарий / вторичная служба не работает, оставьте основную службу запущенной и просто перезапустите себя? Также, как я могу заставить его завершить сценарий, если я использую остановку для вторичной службы?