linux pipe

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

linux pipe

Inlägg av Oltronix »

Jag har ett script mot ett webhotell (one.com) som slutat fungera utan jag ändrat i scriptet. Det jag vill göra som ett 1:a steg är att ta bort alla hängande processer med nått som:

Kod: Markera allt

pi@mumin1 ~ $ ps -ax| grep send| cut -c 1-5 | kill -9
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
warning: bad ps syntax, perhaps a bogus '-'?
See http://gitorious.org/procps/procps/blobs/master/Documentation/FAQ
pi@mumin1 ~ $ 

men det fungerar inte.

Följande processer vill jag ta bort:

Kod: Markera allt

pi@mumin1 ~ $ ps -ax|grep send
warning: bad ps syntax, perhaps a bogus '-'?
See http://gitorious.org/procps/procps/blobs/master/Documentation/FAQ
2677 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
 5180 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
 7620 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
10046 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
12473 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
17348 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
19778 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
22218 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
24656 ?        S      0:00 /bin/bash /home/pi/send-to-one.sh
26140 pts/0    S+     0:00 grep --color=auto send
pi@mumin1 ~ $ 

pi@mumin1 ~ $ ps -ax|grep ftp
warning: bad ps syntax, perhaps a bogus '-'?
See http://gitorious.org/procps/procps/blobs/master/Documentation/FAQ
 2370 ?        Ssl    0:06 /usr/bin/owftpd -c /etc/owfs.conf --pid-file /var/run/owfs/owftpd.pid
 3356 ?        S      0:00 ftp -n -i
 5789 ?        S      0:00 ftp -n -i
 8220 ?        S      0:00 ftp -n -i
10658 ?        S      0:00 ftp -n -i
13094 ?        S      0:00 ftp -n -i
17965 ?        S      0:00 ftp -n -i
18232 pts/1    S+     0:00 man ftp
20397 ?        S      0:00 ftp -n -i
22828 ?        S      0:00 ftp -n -i
25266 ?        S      0:00 ftp -n -i
27312 ?        S      0:00 ftp -n -i
27703 ?        S      0:00 ftp -n -i
27992 pts/0    S+     0:00 grep --color=auto ftp
pi@mumin1 ~ $ 
Hur gör jag för att ta bort processerna?
Användarvisningsbild
ahlsten
Inlägg: 659
Blev medlem: 12 november 2005, 00:24:14
Ort: Uppsala

Re: linux pipe

Inlägg av ahlsten »

Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: linux pipe

Inlägg av Oltronix »

pgrep var en ny bekantskap och enklare än mitt försök. Dock har jag fortfarande problem med argument till kill kommandot

Kod: Markera allt

pi@mumin1 ~ $ pgrep -u pi send| kill -9
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Edit:
Mittåt:
pkill verkar fungera :)

Tack!
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: linux pipe

Inlägg av guckrum »

Varje gång du skriver "ps -ax" så får du ett felmeddelande. Din ps tar inte sådana argument, prova "man ps" och gör rätt. (Antagligen "ps ax".)

xargs är världens grej annars om du vill köra ett kommando med parametrar från en pipe: "... | xargs kill -9". I min "man kill" (Linux) står det ingenstans att kill tar processid från stdin. Vilket OS?
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: linux pipe

Inlägg av guckrum »

...och ta det lugnt med pkill, den dödar allt som matchar!
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: linux pipe

Inlägg av Oltronix »

Tja jag är uppväxt med Berkley unix 4.2. Där var det ps -ax. Jag vet att det är fel men det sitter i ryggmägren, och fungerar fortfarande dock med lite gnäll från OSet

Hos mig är processid i kill argumentet
  • KILL(1) User Commands KILL(1)

    NAME
    kill - send a signal to a process

    SYNOPSIS
    kill [options] <pid> [...]

Kod: Markera allt

pi@mumin1 ~ $ uname -a
Linux mumin1 4.1.7-v7+ #817 SMP PREEMPT Sat Sep 19 15:32:00 BST 2015 armv7l GNU/Linux
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: linux pipe

Inlägg av guckrum »

:)

Precis, så antingen använder du xargs som jag beskrev ovan, eller så gör du något shelligt, typ stoppar in din pipe i backticks som arg till kill, eller använd $(...), lite beroende på shell och smak. Finns säkert fler sätt.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: linux pipe

Inlägg av Oltronix »

Nu har jag kört xargs enligt nedan:

Kod: Markera allt

pi@mumin1 ~ $ ps ax| grep send| cut -c 1-5| xargs kill -9
kanske inte så vackert med det fungerar. Men framför allt jag har förstått att de inte alltid fungerar att ge argument via pipe.

Och till ytter mera visso; Jag har en annan pipe där jag försökte döpa om massa filer till något annat. Filerna ser ut som;
CD-1/song1
CD-1/song2
CD-1/song3
etc

Nu kanske jag kan få det att fungera!

Jag bugar och tackar för nyvunnen kunskap. Tack!! :)

Ps
jag får återkomma med mitt skumma problem med webhotell och ftp
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: linux pipe

Inlägg av Mr Andersson »

Men framför allt jag har förstått att de inte alltid fungerar att ge argument via pipe.
Tekniskt sett fungerar det aldrig att ge argument via pipe. :wink:
Pipes skickar data till stdin hos mottagaren, inte via argument.
Det är just det som xargs är bra för, det "konverterar" från stdin till kommandoargument.
Användarvisningsbild
ojz0r
Inlägg: 244
Blev medlem: 14 september 2007, 19:38:04
Ort: Växjö

Re: linux pipe

Inlägg av ojz0r »

pkill -9 <3
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: linux pipe

Inlägg av maDa »

Du verkar använda ftp en del i skript. Jag rekommenderar att du kikar på lftp som klarar betydligt mer trick och fungerar bättre för automatiska grejor.

Själv använder jag killall när jag ska döda flera processer.
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: linux pipe

Inlägg av hawkan »

Det är ju "ps -ax" som är problemet. Använd sysv syntax "ps -efl" så ska det väl gå bra.
killall är annars rätt.

Edit, aah. Så här ska du nog göra

Kod: Markera allt

kill -9 `ps -efl | grep send | cut -c 1-5`
Användarvisningsbild
Glenn
Inlägg: 33666
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: linux pipe

Inlägg av Glenn »

killall vill man dock INTE använda på en riktig UNIX, för då får man vad man ber om.

..Klassiker när nån linuxmänniska sätter sej vid tex en solarismaskin..

Det gör också att jag aldrig använder killall eftersom det är för lätt att göra fel, precis som att jag av princip undviker fördummande alias.
("alias rm = 'rm -i'" är ett typexempel.)
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 905
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: linux pipe

Inlägg av mankan »

Är inte med på vad du menar, killall på linux slår bara ihjäl dina processer inte andras. Utveckla gärna.
Användarvisningsbild
Glenn
Inlägg: 33666
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: linux pipe

Inlägg av Glenn »

På de flesta "riktiga" UNIX'ar (SysV) så gör killall som det låter, dödar ALLA processer, om man då är root så tar man ner systemet lite osnyggt, är man vanlig user så dödas allt man startat inklusive ens loginskal. vanligen är det inte vad man ville oavsett.

På linux/BSD fungerar det inte så utan killall är en form av kill fast den tar processnamn istället för pid.

Kör man då blandade system så är det en dålig vana att använda killall då det bara är en tidsfråga innan man gör fel.

Man kan då köra pkill, men vanligen föredrar jag att hitta pid och skicka signaler till den istället.
Skriv svar