Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
lemon1337
- Beiträge: 31
- Registriert: 20.07.2013 15:55:32
Beitrag
von lemon1337 » 31.08.2015 14:14:28
Hallo
ich habe ein node.js script und der startbefehl sieht wie folgt aus:
gibt es eine möglichkeit, dass ganze automatisch neu zu starten sobald die screen session beendet wird?
-
Liffi
- Beiträge: 2345
- Registriert: 02.10.2004 01:33:05
Beitrag
von Liffi » 31.08.2015 14:22:14
Du könntest ein while drumpacken, dass das ganze, evtl. mit Verzögerung, wieder ausführt.
-
uname
- Beiträge: 12399
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 31.08.2015 14:25:38
Eigentlich sollte
screen oder
tmux ja gerade nie beendet werden (also detachen statt beenden). Eine Prüfung wäre wohl eher dann doppelt.
-
lemon1337
- Beiträge: 31
- Registriert: 20.07.2013 15:55:32
Beitrag
von lemon1337 » 31.08.2015 14:41:51
Liffi hat geschrieben:Du könntest ein while drumpacken, dass das ganze, evtl. mit Verzögerung, wieder ausführt.
und wie?
-
Liffi
- Beiträge: 2345
- Registriert: 02.10.2004 01:33:05
Beitrag
von Liffi » 31.08.2015 14:45:26
lemon1337 hat geschrieben:Liffi hat geschrieben:Du könntest ein while drumpacken, dass das ganze, evtl. mit Verzögerung, wieder ausführt.
und wie?
Z.B. so:
Code: Alles auswählen
while true; do
screen -S script node script.js && sleep 60;
done
-
uname
- Beiträge: 12399
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 31.08.2015 14:47:42
Vielleicht auch ohne sleep falls keine Verzögerung notwendig:
Um das trotzdem zu beenden am besten den Screen-Prozess (ps, pstree -p) suchen und dann den Vaterprozess (Shell) killen.
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 31.08.2015 14:55:35
Cronjob mit
Code: Alles auswählen
$ screen -list | grep -qE '^\W[0-9]+\.script' || screen -S script ...
? Das daemliche
grep da braucht es, weil
screen -list grundsaetzlich mit
1 returnt, egal, ob das optionale Argument etwas gemacht hat oder nicht:
Code: Alles auswählen
$ (screen -ls nix; echo ret=$? >&2) | wc -l
ret=1
2
$ (screen -ls test; echo ret=$? >&2) | wc -l
ret=1
4
$
Beim zweiten Aufruf gibt es offensichtlich einen auf
test matchenden Screen, aber der Rueckgabewert ist trotzdem nicht null.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
uname
- Beiträge: 12399
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 31.08.2015 14:57:55
Etwas offtopic:
Ich nutze mittlerweile für echte interaktive virtuelle Terminals lieber
tmux mit folgendem Aufruf in ~/.bash_profile:
Code: Alles auswählen
if [ -z $TMUX ]; then
/usr/bin/tmux attach || /usr/bin/tmux new
fi
und folgenden ~/.tmux.conf (CTRL a statt CTRL b)
-
lemon1337
- Beiträge: 31
- Registriert: 20.07.2013 15:55:32
Beitrag
von lemon1337 » 31.08.2015 15:07:29
uname hat geschrieben:Vielleicht auch ohne sleep falls keine Verzögerung notwendig:
Um das trotzdem zu beenden am besten den Screen-Prozess (ps, pstree -p) suchen und dann den Vaterprozess (Shell) killen.
das sieht ja schonmal super aus, aber als was genau speicher ich das? einfach .sh oder wie?
ok einfach als sh
nur das mit dem killen kriege ich nicht so ganz hin
ps gibt 19812 pts/1 00:00:00 bash aus
wenn ich kill 19812 mache passiert aber nichts
Zuletzt geändert von
lemon1337 am 31.08.2015 15:15:09, insgesamt 1-mal geändert.
-
uname
- Beiträge: 12399
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 31.08.2015 15:09:17
Einfach unter /usr/local/bin/programmname mit den Rechten 755 ablegen.