Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[Unix] Pipen naar kill

Pagina: 1
Acties:

Onderwerpen


  • YellowOnline
  • Registratie: januari 2005
  • Laatst online: 30-09 12:24

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Mja, ik wou eigenlijk geen thread beginnen voor deze vraag, maar ik vind geen algemeen topic waar ik dit in kwijt kon.

Morgen geef ik een basisopleiding PowerShell aan UNIXers en ik ben momenteel met mijn lesvoorbereiding bezig. Alleen: ik ben verre van een bash-meester. Ik kan wel met UNIX overweg als user, maar ik ben zeker geen UNIX admin. Het internet geeft me geen echt duidelijk antwoord op de volgende vraag:

Kan je in bash processen oproepen en meteen pipen naar kill? Iets zoals dit dus:

code:
1
ps | grep *mail* | kill -9


bash is niet OO tot zover ik weet, dus het zou kunnen dat er iets meer nodig is. Eigenlijk wil ik gewoon vergelijken met volgende PoSh regel:

code:
1
PS C:\> Get-Service *Exchange* | Stop-Service


Ik zal een kritisch publiek hebben, dus 't is belangrijk dat mijn vergelijking wel klopt. Als iemand mij even kan corrigeren?

Intel i7 8700K | G.Skill SniperX 3200MHz 2x8GB | MSI Z370 PC Pro | Gainward GTX 1070 | Fractal Design Define XL | LG BH10LS30 | Cherry MX Red | Logitech G500 | Thermaltake Smart M850W | Logitech X-530 | LG 34UM58 | Samsung EVO 500GB | 2x Seagate 4TB


  • Skinkie
  • Registratie: juni 2001
  • Laatst online: 09-06 09:04

Skinkie

Op naar de 500

kijk man killall eens

Steun Elkaar, Kopieer Nederlands Waar!


  • Luqq
  • Registratie: juni 2005
  • Laatst online: 15:05
Kijk eens naar accolades. iets á la kill -9 `ps | grep *mail*`

  • Ventieldopje
  • Registratie: december 2005
  • Laatst online: 14:49

Ventieldopje

I'm not your pal, mate!

code:
1
kill `ps | grep *mail*`

Misschien is dit wat je zoekt? Misschien moet je nog even de rotzooi er uit filteren om de PID over te houden maar ok :P

edit: Je was me voor :)

[Voor 8% gewijzigd door Ventieldopje op 07-11-2010 18:39]

www.maartendeboer.net
1D X | 1Ds III | 1N | 5Ds
EF: 300mm f/2.8L IS USM | 200mm f/2L IS USM | 200mm f/1.8L USM | 100mm f/2.8L IS USM
Zeiss: Milvus 1.4/85 | Otus 1.4/55 | Milvus 1.4/50 | Milvus 1.4/25


  • burne
  • Registratie: maart 2000
  • Niet online

burne

Mine! Waah!

YellowOnline schreef op zondag 07 november 2010 @ 18:28:
Kan je in bash processen oproepen en meteen pipen naar kill? Iets zoals dit dus:

code:
1
ps | grep *mail* | kill -9
Ja, maar je moet het wel even masseren:

code:
1
2
3
4
5
[ruben@its ~]$ ps uax | grep httpd
root      2356  0.0  0.6  31580 14060 ?        Ss   Nov06   0:00 /usr/sbin/httpd
apache   12525  0.0  0.3  31580  7792 ?        S    04:03   0:00 /usr/sbin/httpd
apache   12526  0.0  0.3  31580  7808 ?        S    04:03   0:00 /usr/sbin/httpd
apache   12527  0.0  0.3  31580  7784 ?        S    04:03   0:00 /usr/sbin/httpd


Zoals je ziet staat het proces-ID als tweede op de regel, en kill wil een process-ID.

awk to the rescue:

code:
1
2
3
4
5
$ ps uax | grep httpd | awk '{print $2}'
2356
12525
12526
12527


Nu hebben we nog 1 probleem over, en dat is dat kill wel meerdere process-ID's kan killen, maar dan verwacht dat ze op 1 regel staan. 'xargs' leest de pipe voor je en zet ze op 1 regel:

code:
1
2
[ruben@its ~]$ ps uax | grep httpd | awk '{print $2}' | xargs echo
2356 12525 12526 12527 12528


Dus tijd voor het echte werk:

code:
1
2
3
4
5
[ruben@its ~]$ ps uax | grep httpd | awk '{print $2}' | xargs kill -9 
kill 2356: Operation not permitted
kill 12525: Operation not permitted
kill 12526: Operation not permitted
kill 12527: Operation not permitted


Nee, ik ga m'n webserver niet voor je afschieten. ;)

Makkelijker kan het natuurlijk ook. pkill bijvoorbeeld, of zoals genoemd, killall. Zie man-pages voor details.

I don't like facts. They have a liberal bias.


  • DiedX
  • Registratie: december 2000
  • Laatst online: 10:40
Ik snap de vraag, maar vraag me af of de vergelijking goed is. Ja, de talen lijken op elkaar (de | is 1-op-1 gejat uit *nix), maar wat meer van belang is is dat de pipe er is...

De jongens kennen bash, dan is het des te interessanter om het PS-Commando te geven hiervoor...

  • YellowOnline
  • Registratie: januari 2005
  • Laatst online: 30-09 12:24

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
burne schreef op zondag 07 november 2010 @ 18:39:
[...]

Ja, maar je moet het wel even masseren:

code:
1
2
3
4
5
[ruben@its ~]$ ps uax | grep httpd
root      2356  0.0  0.6  31580 14060 ?        Ss   Nov06   0:00 /usr/sbin/httpd
apache   12525  0.0  0.3  31580  7792 ?        S    04:03   0:00 /usr/sbin/httpd
apache   12526  0.0  0.3  31580  7808 ?        S    04:03   0:00 /usr/sbin/httpd
apache   12527  0.0  0.3  31580  7784 ?        S    04:03   0:00 /usr/sbin/httpd


Zoals je ziet staat het proces-ID als tweede op de regel, en kill wil een process-ID.

awk to the rescue:

code:
1
2
3
4
5
$ ps uax | grep httpd | awk '{print $2}'
2356
12525
12526
12527


Nu hebben we nog 1 probleem over, en dat is dat kill wel meerdere process-ID's kan killen, maar dan verwacht dat ze op 1 regel staan. 'xargs' leest de pipe voor je en zet ze op 1 regel:

code:
1
2
[ruben@its ~]$ ps uax | grep httpd | awk '{print $2}' | xargs echo
2356 12525 12526 12527 12528


Dus tijd voor het echte werk:

code:
1
2
3
4
5
[ruben@its ~]$ ps uax | grep httpd | awk '{print $2}' | xargs kill -9 
kill 2356: Operation not permitted
kill 12525: Operation not permitted
kill 12526: Operation not permitted
kill 12527: Operation not permitted


Nee, ik ga m'n webserver niet voor je afschieten. ;)

Makkelijker kan het natuurlijk ook. pkill bijvoorbeeld, of zoals genoemd, killall. Zie man-pages voor details.
Voor m'n vergelijking is killall niet van toepassing, maar bovenstaande is sowieso exact wat ik zocht. Zoals ik dacht komt er nog een en ander bij te zien omdat er geen echte objecten doorgestuurd worden maar wel strings.

Intel i7 8700K | G.Skill SniperX 3200MHz 2x8GB | MSI Z370 PC Pro | Gainward GTX 1070 | Fractal Design Define XL | LG BH10LS30 | Cherry MX Red | Logitech G500 | Thermaltake Smart M850W | Logitech X-530 | LG 34UM58 | Samsung EVO 500GB | 2x Seagate 4TB


  • burne
  • Registratie: maart 2000
  • Niet online

burne

Mine! Waah!

YellowOnline schreef op zondag 07 november 2010 @ 18:42:
Voor m'n vergelijking is killall niet van toepassing, maar bovenstaande is sowieso exact wat ik zocht. Zoals ik dacht komt er nog een en ander bij te zien omdat er geen echte objecten doorgestuurd worden maar wel strings.
Als het directer moet heb ik nog wel een variant voor je:

code:
1
2
3
4
5
[ruben@its ~]$ pgrep httpd | xargs kill -9
kill 2356: Operation not permitted
kill 12525: Operation not permitted
kill 12526: Operation not permitted
kill 12527: Operation not permitted

slechts drie commando's, in plaats van 5 :)

I don't like facts. They have a liberal bias.


  • Kees
  • Registratie: juni 1999
  • Laatst online: 14:26

Kees

Serveradmin / BOFH / DoC
Maar gebruik geen kill -9 in je voorbeeld; dat is vies :P Dat mag je pas gebruiken als normale kills niet meer werken, dus eerst alleen kill, en als het echt niet dood wil kun je -9 eens gebruiken, anders heb je een grote kans op dataverlies.

[Voor 34% gewijzigd door Kees op 07-11-2010 19:17]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • YellowOnline
  • Registratie: januari 2005
  • Laatst online: 30-09 12:24

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Dat klopt wel eigenlijk. De -Force zou ik in PoSh ook niet per definitie gebruiken.

Intel i7 8700K | G.Skill SniperX 3200MHz 2x8GB | MSI Z370 PC Pro | Gainward GTX 1070 | Fractal Design Define XL | LG BH10LS30 | Cherry MX Red | Logitech G500 | Thermaltake Smart M850W | Logitech X-530 | LG 34UM58 | Samsung EVO 500GB | 2x Seagate 4TB


  • deadinspace
  • Registratie: juni 2001
  • Laatst online: 29-09 11:29

deadinspace

The what goes where now?

Ik heb nog niemand anders dit zien opmerken, maar die grep doet ook niet wat je wil met die asterisks daar :P
Luqq schreef op zondag 07 november 2010 @ 18:36:
Kijk eens naar accolades. iets á la kill -9 `ps | grep *mail*`
Dat zijn backquotes of backticks. Accolades zijn deze: {}.

Verder als algemeen advies: gebruik alsjeblieft $() in plaats van ``, dat is veel leesbaarder, nest correct, en vermijdt de verwarring met gewone quotes.

Dus
kill $(pgrep httpd)

in plaats van
kill `pgrep httpd`

  • sam.vimes
  • Registratie: januari 2007
  • Laatst online: 14-10 15:47
burne schreef op zondag 07 november 2010 @ 18:39:
[...]
awk to the rescue:

code:
1
2
3
4
5
$ ps uax | grep httpd | awk '{print $2}'
2356
12525
12526
12527
U komt in aanmerking voor de UUOG (Useless Use Of Grep) Award. *O*
Veel mensen gebruiken Awk alleen om een bepaalde kolom uit de input te filteren en realiseren zich niet dat je met Awk ook kunt zoeken op reguliere expressies.
code:
1
grep httpd | awk '{print $2}'

wordt dan
code:
1
awk '/httpd/{print $2}'

  • Wolfboy
  • Registratie: januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

sam.vimes schreef op maandag 08 november 2010 @ 15:16:
[...]

U komt in aanmerking voor de UUOG (Useless Use Of Grep) Award. *O*
Veel mensen gebruiken Awk alleen om een bepaalde kolom uit de input te filteren en realiseren zich niet dat je met Awk ook kunt zoeken op reguliere expressies.
code:
1
grep httpd | awk '{print $2}'

wordt dan
code:
1
awk '/httpd/{print $2}'
Je kan dan ook _heel_ veel met awk, de vraag is alleen of je dat wil. awk is weer een compleet aparte taal om te leren terwijl het combineren van een paar commando's weinig extra kennis vereist ;)

Al moet ik zeggen dat ik awk vaak gebruik om gemiddelden e.d. te berekenen :P

Blog [Stackoverflow] [LinkedIn]


  • YellowOnline
  • Registratie: januari 2005
  • Laatst online: 30-09 12:24

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Mijn cursus is goed verlopen; de UNIXers hebben nauwelijks tegengeprutteld :p Niemand is over mijn voorbeeld gevallen (behalve dat het gemakkelijker kan met killall). Dank voor de toelichting ivm kill, allen.

Intel i7 8700K | G.Skill SniperX 3200MHz 2x8GB | MSI Z370 PC Pro | Gainward GTX 1070 | Fractal Design Define XL | LG BH10LS30 | Cherry MX Red | Logitech G500 | Thermaltake Smart M850W | Logitech X-530 | LG 34UM58 | Samsung EVO 500GB | 2x Seagate 4TB


  • CAPSLOCK2000
  • Registratie: februari 2003
  • Laatst online: 11:51

CAPSLOCK2000

zie teletekst pagina 888

TS geeft les over PowerShell. Foutjes in de bash code zijn niet zo dramatisch. Het publiek snapt toch wel wat er moet staan (al nemen ze je misschien niet meer serieus).

Ik denk dat
 pgrep sendmail | xargs kill -9

het gevraagde het best benaderd.

This post is warranted for the full amount you paid me for it.


  • u_nix_we_all
  • Registratie: augustus 2002
  • Niet online
Ik zie dat er uitdrukkelijk UNIX in de titel staat, en geen linux. Daarom vind ik de oplossingen met pgrep niet zo geschikt. Om over killall maar helemaal te zwijgen. :>

  • burne
  • Registratie: maart 2000
  • Niet online

burne

Mine! Waah!

u_nix_we_all schreef op maandag 08 november 2010 @ 18:08:
Ik zie dat er uitdrukkelijk UNIX in de titel staat, en geen linux. Daarom vind ik de oplossingen met pgrep niet zo geschikt. Om over killall maar helemaal te zwijgen. :>
Praat eens geen onzin? :+

code:
1
2
3
4
5
6
7
8
9
ruben@xs01:~$ ssh -l ruben <somebox>
Enter passphrase for key '/home/ruben/.ssh/id_dsa': 
Last login: Mon Nov  8 14:11:57 2010 from <office>
Sun Microsystems Inc.   SunOS 5.11      snv_134 February 2010
ruben@<somebox>:~$ which killall
/usr/sbin/killall
ruben@<somebox>:~$ which pkill
/usr/bin/pkill
ruben@<somebox>:~$

pgrep/pkill komt origineel van Solaris (een certified Sys V UNIX) en is later naar linux/FreeBSD geport. killall is nog veel ouder en maakt al sinds 1992 deel uit van officieel System V UNIX. UNIX-killall is overigens een stuk lastiger dan linux-killall. Als je geen parameters meegeeft killt killall alle processen waar je toegang toe hebt. Als root komt het neer op een reboot.

I don't like facts. They have a liberal bias.


  • Wolfboy
  • Registratie: januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

burne schreef op maandag 08 november 2010 @ 18:59:
killall is nog veel ouder en maakt al sinds 1992 deel uit van officieel System V UNIX. UNIX-killall is overigens een stuk lastiger dan linux-killall. Als je geen parameters meegeeft killt killall alle processen waar je toegang toe hebt. Als root komt het neer op een reboot.
Been there, done that. Killed an HP-UX box :X

Blog [Stackoverflow] [LinkedIn]


  • Rainmaker
  • Registratie: augustus 2000
  • Laatst online: 30-09 21:59
Solaris is niet de enige "echte" UNIX. Tru64 heeft bijvoorbeeld geen pgrep, en zoals gezegd hebben killall op de meeste "echte" unixxes een heel andere betekenis.

Op HP-UX maakt het trouwens niet uit of je argumenten aan killall meegeeft. Killall doet dan wat ie moet doen, en negeert het argument.

Op Solaris krijg je volgens mij inderdaad een help tekst als je een argument aan killall meegeeft.

[Voor 27% gewijzigd door Rainmaker op 09-11-2010 23:57]

We are pentium of borg. Division is futile. You will be approximated.


  • burne
  • Registratie: maart 2000
  • Niet online

burne

Mine! Waah!

Rainmaker schreef op dinsdag 09 november 2010 @ 23:56:
Op Solaris krijg je volgens mij inderdaad een help tekst als je een argument aan killall meegeeft.
Nope.
code:
1
2
3
4
5
6
7
ruben@xs01:~$ ssh <somebox> 
Enter passphrase for key '/home/ruben/.ssh/id_dsa': 
Last login: Mon Nov  8 18:46:22 2010 from xs01
Sun Microsystems Inc.   SunOS 5.11      snv_134 February 2010
ruben@<somebox>:~$ killall
permission denied
ruben@<somebox>:~$

I don't like facts. They have a liberal bias.

Pagina: 1


Microsoft Xbox Series X LG CX Google Pixel 5 CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True