"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

.sh script: ctrl-c an screen senden

wergor 03.08.2014 - 10:43 3793 15
Posts

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: vulkanland
Posts: 4095
ich bastle mir gerade ein skript für einen service, der bei start einen screen öffnet und ein programm ausführt. bei stop soll das programm (pyload) mit ctrl-c beendet und der screen gekillt werden.

Code:
[root@localhost ~]# screen -S pyload -X stuff "^C"
beendet das programm wie gewünscht. wie sende ich ctrl-c aus einem skript heraus an den screen?

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Was möchtest du mit pyload machen? Möglicherweise kann man es eleganter lösen als SIGTERM/SIGINT an den Prozess zu schicken.
Bearbeitet von Lukas am 03.08.2014, 12:09

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zwar keine Antwort auf die Frage, aber screen hat das command :kill, das den aktuellen screen löscht und alles beendet, was darin läuft. Und wenn es der letzte/einzige ist, wird wohl die ganze session beendet. Das dürfte ziemlich genau das sein, was du brauchst. Soweit ich weiß, kann man diese commands auch recht leicht von außen schicken, ich weiß allerdings nicht auswendig, wie.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: vulkanland
Posts: 4095
ich wollte pyload als service laufen lassen. ich habe jetzt durch die doku erfahren, dass man pyload auch einfach mit --daemon starten kann, was meine ganze screen sache überflüssig macht :D
pyload -q oder --quit ist natürlich die elegantere lösung, wusste ich aber vorher nicht

den kill command habe ich versucht, aber der hat gar nichts gemacht. weis nicht warum, ist in der zeile ein fehler?
Code:
screen -S pyload -X kill

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Mit passender PID kannst du mit
Code:
kill -INT <PID>
das SIGINT (Signal, welches Ctrl-C schickt) an den Prozess schicken. Ob du das an screen oder direkt an pyload schickst ist dann deine Entscheidung.

Ich verwende pyLoad mit dem offiziellen Debian Paket, in welchem auch init scripts vorhanden sind. Alles andere regelt mein init system. :)

e: Mit offiziell meinte ich die Pakete von den pyLoad Entwicklern hier. AFAIR gibt es kein Paket in den debian repositories.
Bearbeitet von Lukas am 03.08.2014, 12:53

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: vulkanland
Posts: 4095
das problem an
Code:
kill -INT <PID>
ist dass ich die PID eben wissen muss. das habe ich auch versucht, aber nicht hinbekommen (linuxnoob olé :D )

für rhel/centos gibts leider kein offizieles paket, aber mit dem sourcecode geht das eigentlich problemlos, nur der service fehlt.

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Für die Zukunft:
Code:
ps -A | grep pyload
Müsste dir die PID anzeigen und mit
Code:
ps -A | grep pyload | cut -d ' ' -f2
sollte dir die PID alleine angezeigt werden.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: vulkanland
Posts: 4095
thx!

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Zitat von Lukas
Code:
ps -A | grep pyload
Code:
ps -A | grep pyload | cut -d ' ' -f2

https://www.youtube.com/watch?v=xoMgnJDXd3k

Code:
 $ whatis pgrep
pgrep (1)            - look up or signal processes based on name and other attributes

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Haha mmd :D

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Zitat von COLOSSUS
https://www.youtube.com/watch?v=xoMgnJDXd3k

Code:
 $ whatis pgrep
pgrep (1)            - look up or signal processes based on name and other attributes

Hahahaha colo :D

Man lernt nie aus. Aber jetzt wo du es sagst, kann ich mich wieder erinnern an pgrep. :)

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Warum alles so kompliziert, wenns "killall" gibt?

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: vulkanland
Posts: 4095
man kann sichs ganz ganz einfach machen, oder man kann was lernen :p

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Wer PIDs nicht nur listen, sondern auch Signale an sie senden will, kann sich an pgrep(1)s unfreundlicheren Bruder, pkill(1), wenden.

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3693
Ich mag pkill, da muß man nicht soviel denken, einfach Mal schießen und hoffen daß man nicht zuviel erwischt. :rolleyes:
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz