Ich habe ein Shell-Skript wie folgt
ss.sh
#!/bin/bash
opFile="custom.data"
sourceFile="TestOutput"
./fc app test > $sourceFile
grep -oP '[0-9.]+(?=%)|[0-9.]+(?=[A-Z]+ of)' "$sourceFile" | tr '\n' ',' > $opFile
sed -i 's/,$//' $opFile
Voraussetzung ist, dass ich dieses Skript mit dem Befehl watch verwenden muss. Und ich möchte daraus einen System-Service machen. Ich habe es so gemacht.
sc.sh
#!/bin/bash
watch -n 60 /root/ss.sh
Und in meiner / etc / systemd / system,
log_info.service
[Unit]
Description="Test Desc"
After=network.target
[Service]
ExecStart=/root/sc.sh
Type=simple
[Install]
WantedBy=default.target
Wenn ich systemctl start log_info.service starte, läuft es aber nicht kontinuierlich so, wie ich es gerne hätte.
Beim Ausführen von sytemctl status log_info.service
info_log.service - "Test Desc"
Loaded: loaded (/etc/systemd/system/info_log.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2016-09-12 08:17:02 UTC; 2min 18s ago
Process: 35555 ExecStart=/root/sc.sh (code=exited, status=1/FAILURE)
Main PID: 35555 (code=exited, status=1/FAILURE)
Sep 12 08:17:02 mo-b428aa6b4 systemd[1]: Started "Test Desc".
Sep 12 08:17:02 mo-b428aa6b4 sc.sh[35654]: Error opening terminal: unknown.
Sep 12 08:17:02 mo-b428aa6b4 systemd[1]: info_log.service: Main process exited, code=exited, status=1/FAILURE
Sep 12 08:17:02 mo-b428aa6b4 systemd[1]: info_log.service: Unit entered failed state.
Sep 12 08:17:02 mo-b428aa6b4 systemd[1]: info_log.service: Failed with result 'exit-code'.
Irgendwelche Ideen, warum es nicht richtig läuft? Jede Hilfe wäre dankbar!
watch
oder läuft sowas screen
oder tmux
Sie können also ein Fenster haben, in dem das ausgeführt wird, und andere, in denen Sie andere Arbeiten ausführen. Bonus: Sie können sich wieder mit denselben Terminals verbinden, wenn Sie sich remote anmelden, und die Dinge, die Sie tun, überleben eine SSH-Trennung
screen
und tmux
sind nicht verfügbar? Sie können schon da sein. Andernfalls würde ich wahrscheinlich entweder 2 Fenster öffnen, wenn ich das die ganze Zeit haben wollte, oder es nur episodisch ausführen.
Error opening terminal: unknown.
watch
muss auf ein Terminal schreiben, aber Dienste haben keinen Zugriff auf eines. Warum soll dies eine Dienstleistung sein?