Toon posts:

Process in Bash killen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een scriptje maken met Bash waar ik XMMS wil draaien in een script die ik xm noem. Hier is de code:

#!/bin/bash
#Commandline script for starting xmms and killing it after playing
PROCESSID=`ps -edalf | grep xmms | grep -v grep | awk '{print $4}'`
echo $PROCESSID
xmms -p $1
kill -9 $PROCESSID
echo "xmms ended for $1"

Echter, als xmms klaar is met het afspelen, dan blijft xmms gewoon op mijn scherm terwijl ik wil dat het wordt afgesloten. Ik weet dat xmms zichtzelf niet afsluit en dus niet de shell loslaat en dus niet bij het commando kill kan komen. Weet iemand een oplossing voor dit probleem?

Alvast bedankt :)

  • imdos
  • Registratie: Maart 2000
  • Laatst online: 16:27

imdos

I use FreeNAS and Ubuntu

moet het perse xmms zijn :? Andere progs zoals mplayer of mpg123 houden namelijk wel op na 1 bestand te hebben gespeeld

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


Verwijderd

uhm...

#!/bin/bash
#Commandline script for starting xmms and killing it after playing
PROCESSID=`ps -edalf | grep xmms | grep -v grep | awk '{print $4}'`
echo $PROCESSID
xmms -p $1
killall $XMMS
echo "xmms ended for $1"

Verwijderd

Topicstarter
Het hoeft inderdaad geen xmms te zijn. Het gat erom dat ik via een commandline mp3-tjes kan afspelen met een script. Eventueel dat ik een mp3-tje kan kiezen als commandline argument of een playlist die het mp3 programma kan afspelen.
Voor de reacties die ik al heb ontvangen thanks :*)

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:36

odysseus

Debian GNU/Linux Sid

Gewoon een ampersand gebruiken. Zie het volgende voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh

echo "Zonder ampersand"
date -Iseconds
sleep 10
date -Iseconds

echo "Met ampersand"
date -Iseconds
sleep 10 &
date -Iseconds

Geeft als uitvoer (let op de tijd in seconden die staat aangegeven):
code:
1
2
3
4
5
6
Zonder ampersand
2003-12-02T20:25:18+0100
2003-12-02T20:25:28+0100
Met ampersand
2003-12-02T20:25:28+0100
2003-12-02T20:25:28+0100

Met een ampersand komt een proces in de achtergrond te draaien :). Je kan het met 'fg' weer op de voorgrond krijgen (of een ander proces - zie 'help fg') :).

Ik weet dat mijn datum niet goed staat - het ding is plotseling versprongen en heb het nog niet goed gezet.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Erm ja..en wat dan ook helpt, is *eerst* xmms opstarten en daarna pas het process-ID opvragen.

Verder is kill -9 overbodig lomp; nu gebruikt XMMS voor zover ik weet geen shared memory, waardoor het misschien minder uitmaakt - maar je kunt ook gewoon 'kill' gebruiken en dan werkt het ook; bovendien sluit XMMS zichzelf dan gewoon netjes af.


En wat nog veel en veel makkelijker is, is idd gewoon mpg321 of mpg123 gebruiken. Maar dat terzijde.

[ Voor 14% gewijzigd door Wilke op 06-11-2003 10:22 ]


  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 14-04 13:57

Bergen

Spellingscontroleur

Waarom niet pidof gebruiken om het process-id te vinden? :?

Verwijderd

Topicstarter
Okay een reactie van een dag later maar het was laat geworden vannacht ;)

Die tip met mpg123 is een goeie. Een commandline mp3 player. Die gebruik ik nu om mijn mp3-tjes af te spelen. Die sluit automatisch af als het mp3-tje afgespeeld is.
Thanks allemaal.

  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Inderaad, waarom tenslotte moeilijk doen, als het ook supermakkelijk kan ;)
Pagina: 1