/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Awk woes
Fra : Jesper Frank Nemholt


Dato : 12-03-01 23:02

Hej!

Jeg er lige ved at rette et rc script til så det kører korrekt på hhv.
Tru64, Solaris, Linux & NetBSD.

I den forbindelse rendte jeg ind i at følgende ikke virker med den Awk der
f.eks. er på RedHat :

kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print
$2}'`

Tilsyneladende er det noget med undescore & punktum i min regex
(statdb_client.pl), men hvordan escaper jeg mig ud af det ?


l8r/Jspr



 
 
Torben Simonsen (12-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 12-03-01 23:33

"Jesper Frank Nemholt" <jfn@dassic.com> writes:

> Jeg er lige ved at rette et rc script til så det kører korrekt på hhv.
> Tru64, Solaris, Linux & NetBSD.
>
> I den forbindelse rendte jeg ind i at følgende ikke virker med den Awk
> der f.eks. er på RedHat :
>
> kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/
> {print $2}'`
>
> Tilsyneladende er det noget med undescore & punktum i min regex
> (statdb_client.pl), men hvordan escaper jeg mig ud af det ?

Punktummet skal escapes med en backslash. Jeg har aldrig hørt om, at
underscore skulle have en speciel betydning i regex'er. I øvrigt så
behøver du ikke eksplicit at angive, at du vil match på hele $0, så
din linie burde kunne skrives som:

kill `ps -fu statdb | awk '/statdb_client\.pl/ && !/awk/ {print $2}'`

Helt bortset fra awk, så ville jeg være en del mere bekymret for, om
output fra 'ps -fu' ser nogenlunde ens ud på de fire forskellige
systemer.

--
-- Torben.

Jesper Frank Nemholt (13-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 13-03-01 00:39

"Torben Simonsen" <ts@biograferne.dk> wrote in message
news:m3wv9ulisn.fsf@pc115235.stofanet.dk...
> "Jesper Frank Nemholt" <jfn@dassic.com> writes:
>
> > Jeg er lige ved at rette et rc script til så det kører korrekt på hhv.
> > Tru64, Solaris, Linux & NetBSD.
> >
> > I den forbindelse rendte jeg ind i at følgende ikke virker med den Awk
> > der f.eks. er på RedHat :
> >
> > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/
> > {print $2}'`
> >
> > Tilsyneladende er det noget med undescore & punktum i min regex
> > (statdb_client.pl), men hvordan escaper jeg mig ud af det ?
>
> Punktummet skal escapes med en backslash. Jeg har aldrig hørt om, at
> underscore skulle have en speciel betydning i regex'er. I øvrigt så
> behøver du ikke eksplicit at angive, at du vil match på hele $0, så
> din linie burde kunne skrives som:
>
> kill `ps -fu statdb | awk '/statdb_client\.pl/ && !/awk/ {print $2}'`

Hmm, stadig ingen effekt på Red Hat 7.
Det er både underscore & punktum den ikke kan lide og escape med backslash
virker ikke.

Forresten :

[statdb@miro rc]$ awk --version
GNU Awk 3.0.6

> Helt bortset fra awk, så ville jeg være en del mere bekymret for, om
> output fra 'ps -fu' ser nogenlunde ens ud på de fire forskellige
> systemer.

Det gør det undtagen på NetBSD :

Red Hat Linux 7 :

[statdb@miro rc]$ ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 18979 18978 0 Mar11 pts/1 00:00:00 -bash


Solaris 8 :

bash-2.03$ ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 18939 18937 0 Mar 11 pts/3 0:03 -bash


Tru64 5.1A :

prueba> ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 189464 1 0.0 Feb 16 ?? 0:00.16
/usr/opt/statdb/mysql/bin/safe_mysqld


l8r/Jspr



Thorbjørn Ravn Ander~ (13-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 13-03-01 10:44

Jesper Frank Nemholt wrote:

> Hmm, stadig ingen effekt på Red Hat 7.
> Det er både underscore & punktum den ikke kan lide og escape med backslash
> virker ikke.

Definér "ikke kan lide" og "virker ikke".

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jesper Frank Nemholt (13-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 13-03-01 20:58

"Thorbjørn Ravn Andersen" <thunderbear@bigfoot.com> wrote in message
news:3AADEBF0.8D23E42C@bigfoot.com...
> Jesper Frank Nemholt wrote:
>
> > Hmm, stadig ingen effekt på Red Hat 7.
> > Det er både underscore & punktum den ikke kan lide og escape med
backslash
> > virker ikke.
>
> Definér "ikke kan lide" og "virker ikke".

Min chef kan "ikke lide" mig hvis jeg laver "rm -rf /" som root.
Maskinen jeg laver "rm -rf /" som root på "virker ikke" efterfølgende.

To sider af samme sag.


l8r/Jspr



Peter Makholm (14-03-2001)
Kommentar
Fra : Peter Makholm


Dato : 14-03-01 08:14

"Jesper Frank Nemholt" <jfn@dassic.com> writes:

> Min chef kan "ikke lide" mig hvis jeg laver "rm -rf /" som root.
> Maskinen jeg laver "rm -rf /" som root på "virker ikke" efterfølgende.

Jamen, du forklare ikke din kollega hvad der er galt ved at sige "det
virker ikke". Du skriver hvordan virker ikke-heden giver sig til udtryk.

Ellers har din kollega ikke en jordisk chance for at vide om det kan
fikses ved bare at bruge en bootfloppy eller /lib skal
regenereres. (Du huskede jo at dø den, da du opdagende hvad du var
igang med.)

--
Free beer får det bedste frem i en pingvin.
http://peter.makholm.net/beer/

Thorbjørn Ravn Ander~ (14-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-03-01 11:00

Jesper Frank Nemholt wrote:

> > Definér "ikke kan lide" og "virker ikke".
>
> Min chef kan "ikke lide" mig hvis jeg laver "rm -rf /" som root.
> Maskinen jeg laver "rm -rf /" som root på "virker ikke" efterfølgende.

Ineffektivt. Det er hurtigere at skrive cat /dev/random >
/dev/hdwhatever.

Og hvordan relaterer det til dit oprindelige problem?
--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Peter Makholm (14-03-2001)
Kommentar
Fra : Peter Makholm


Dato : 14-03-01 11:12

Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> writes:

> Ineffektivt. Det er hurtigere at skrive cat /dev/random >
> /dev/hdwhatever.

Det er måske hurtigere at skrive, men bruger du linux skel du overveje
om du har brug for at overskrive harddisken med cryptografisk sikker
tilfældighed. Ellers vil `cat /dev/urandom > /dev/hda` være hurtigere.

--
Free beer får det bedste frem i en pingvin.
http://peter.makholm.net/beer/

Jesper Frank Nemholt (14-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 14-03-01 11:26

"Peter Makholm" <peter@makholm.net> wrote in message
news:87itlcpsmc.fsf@hacking.dk...
> Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> writes:
>
> > Ineffektivt. Det er hurtigere at skrive cat /dev/random >
> > /dev/hdwhatever.
>
> Det er måske hurtigere at skrive, men bruger du linux skel du overveje
> om du har brug for at overskrive harddisken med cryptografisk sikker
> tilfældighed. Ellers vil `cat /dev/urandom > /dev/hda` være hurtigere.

Der er da langt flere tegn i cat "/dev/urandom > /dev/hda" end "rm -rf /",
og den er desuden platformspecifik. På Tru64, Solaris & AIX virker den
f.eks. ikke fordi /dev/hda ikke findes eller fordi /dev/urandom eller
/dev/random ikke findes.
Jeg tror rm -rf / er den korteste... vi havde faktisk en intern konkurrence
i unix afdelingen mens jeg arbejdede i DK om at finde den nemmeste &
hurtigste eller den mest snedige måde at smadre (via software) et system på.

rm -rf / virker ganske glimrende. Vi testede det naturligvis, men som de
tabere vi er kun på en testmaskine.

Hos den kunde jeg er hos pt. har det "testet" det i produktion <ouch>. Nogen
kom efter sigende til at skrive rm -rf / aplicaciones/users/etellerandet.
Bemærk mellemrummet efter første slash.
De har også prøvet rm .*, men den er nu ikke så sjælden.


l8r/Jspr



Thorbjørn Ravn Ander~ (14-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-03-01 11:40

Jesper Frank Nemholt wrote:
>
> "Peter Makholm" <peter@makholm.net> wrote in message
> news:87itlcpsmc.fsf@hacking.dk...
> > Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> writes:
> >
> > > Ineffektivt. Det er hurtigere at skrive cat /dev/random >
> > > /dev/hdwhatever.
> >
> > Det er måske hurtigere at skrive, men bruger du linux skel du overveje
> > om du har brug for at overskrive harddisken med cryptografisk sikker
> > tilfældighed. Ellers vil `cat /dev/urandom > /dev/hda` være hurtigere.
>
> Der er da langt flere tegn i cat "/dev/urandom > /dev/hda" end "rm -rf /",
> og den er desuden platformspecifik. På Tru64, Solaris & AIX virker den
> f.eks. ikke fordi /dev/hda ikke findes eller fordi /dev/urandom eller
> /dev/random ikke findes.

Så brug "dd" direkte på diskenheden. Bare indsæt et par bytes eller ti.

> Jeg tror rm -rf / er den korteste... vi havde faktisk en intern konkurrence
> i unix afdelingen mens jeg arbejdede i DK om at finde den nemmeste &
> hurtigste eller den mest snedige måde at smadre (via software) et system på.

Fdisk er godt. (Eller format hvis man er mere til SOlaris).

> rm -rf / virker ganske glimrende. Vi testede det naturligvis, men som de
> tabere vi er kun på en testmaskine.

Det er for langsomt. Disken skal jo opdateres hele tiden med alle de
ændringer af inodes som du fremtvinger.

> Hos den kunde jeg er hos pt. har det "testet" det i produktion <ouch>. Nogen
> kom efter sigende til at skrive rm -rf / aplicaciones/users/etellerandet.
> Bemærk mellemrummet efter første slash.
> De har også prøvet rm .*, men den er nu ikke så sjælden.

Du har læst den med VAX-assembler, næspas?

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jesper Frank Nemholt (14-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 14-03-01 21:30

"Thorbjørn Ravn Andersen" <thunderbear@bigfoot.com> wrote in message
news:3AAF4A92.7666272F@bigfoot.com...
> Jesper Frank Nemholt wrote:
> >
[clip]
> > Jeg tror rm -rf / er den korteste... vi havde faktisk en intern
konkurrence
> > i unix afdelingen mens jeg arbejdede i DK om at finde den nemmeste &
> > hurtigste eller den mest snedige måde at smadre (via software) et system
på.
>
> Fdisk er godt. (Eller format hvis man er mere til SOlaris).

# fdisk
ksh: fdisk: not found
# man fdisk
No reference page found for fdisk
# format
ksh: format: not found
# man format
No reference page found for format.

> > rm -rf / virker ganske glimrende. Vi testede det naturligvis, men som de
> > tabere vi er kun på en testmaskine.
>
> Det er for langsomt. Disken skal jo opdateres hele tiden med alle de
> ændringer af inodes som du fremtvinger.

Ja men det er 100% portabel unix kode.
Skal det være hurtigt & platformspecifikt så er det bare echo "delete unit
d0" | hszterm eller den distribuerede version :

host -l domain | awk '{system("rsh $1 grim_kommando")}'

> > Hos den kunde jeg er hos pt. har det "testet" det i produktion <ouch>.
Nogen
> > kom efter sigende til at skrive rm -rf /
aplicaciones/users/etellerandet.
> > Bemærk mellemrummet efter første slash.
> > De har også prøvet rm .*, men den er nu ikke så sjælden.
>
> Du har læst den med VAX-assembler, næspas?

Creo que si :

070100002c000000000000000000000000000000000000000000000000000000
0000dd8fff010000dd8f27000000fb02ef07000000fb01ef070000000000bc8f
8800040000bc012f65746300

Jeg har endda nogle Vax maskiner jeg kan bruge det på.


l8r/Jspr



Thorbjørn Ravn Ander~ (14-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-03-01 22:15

Jesper Frank Nemholt wrote:

> > > i unix afdelingen mens jeg arbejdede i DK om at finde den nemmeste &
> > > hurtigste eller den mest snedige måde at smadre (via software) et system
> på.

Hmmm... Hvad med at hælde bytes ned i kernelimaget. Næh, det virker
ikke under Linux (ihvertifald) Hmm...

Swapfilen/partitionen skulle man vel kunne komme til. Har I prøvet dét?


# format
> ksh: format: not found
> # man format
> No reference page found for format.

Jeg tror ikke på det er under Solaris. Men det er længe siden.

Bortset fra det er Solaris (gamle?) diskpartitioneringsværktøj nok det
farligste program jeg kender.

> > Det er for langsomt. Disken skal jo opdateres hele tiden med alle de
> > ændringer af inodes som du fremtvinger.
>
> Ja men det er 100% portabel unix kode.

Sandt.

> Skal det være hurtigt & platformspecifikt så er det bare echo "delete unit
> d0" | hszterm eller den distribuerede version :
>
> host -l domain | awk '{system("rsh $1 grim_kommando")}'

Buuuh. I er ret ligeglade med sikkerhed, hva? En ond mand med en
Linuxmaskine på jeres net, og så kan det godt være det bliver sjovt.

> > Du har læst den med VAX-assembler, næspas?
>
> Creo que si :
>
> 070100002c000000000000000000000000000000000000000000000000000000
> 0000dd8fff010000dd8f27000000fb02ef07000000fb01ef070000000000bc8f
> 8800040000bc012f65746300

Det kunne godt se sådan ud. Den historie imponerer mig stadig.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jesper Frank Nemholt (15-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 15-03-01 00:42

"Thorbjørn Ravn Andersen" <thunderbear@bigfoot.com> wrote in message
news:3AAFDF49.9989AABF@bigfoot.com...
> Jesper Frank Nemholt wrote:
>
> > > > i unix afdelingen mens jeg arbejdede i DK om at finde den nemmeste &
> > > > hurtigste eller den mest snedige måde at smadre (via software) et
system
> > på.
>
> Hmmm... Hvad med at hælde bytes ned i kernelimaget. Næh, det virker
> ikke under Linux (ihvertifald) Hmm...

I Tru64 kan man fjerne kernefilen helt uden der sker noget... det er først
ved næste boot man har problemer.
Det er dog uforskammet nemt & hurtigt at bygge en ny kerne, så det er der
ikke så meget destruktion i.
Sjovere er det så netop at bygge en ny kerne og f.eks. lægge 1 til i den
logiske SCSI nummerering... så kan maskinen hverken finde boot eller swap
ved næste boot, og den hænger med en "init: respawning too fast" som man
ikke kan breake sig ud af.
Hvis man samtidig giver den nye kerne et gammelt timestamp og fjerner spor i
/.sh_history går der nok nogle timer før den stakkels sysadm finder ud af
hvad der er galt.

> Swapfilen/partitionen skulle man vel kunne komme til. Har I prøvet dét?

De fleste maskiner kører lazy swap og har rigeligt med RAM så de swapper
ikke. Jeg kan formentlig totalsmadre swap uden at der sker noget de første
par timer/dage.

[clip]
> >
> > host -l domain | awk '{system("rsh $1 grim_kommando")}'
>
> Buuuh. I er ret ligeglade med sikkerhed, hva? En ond mand med en
> Linuxmaskine på jeres net, og så kan det godt være det bliver sjovt.

Det er kun et tænkt eksempel. Selvfølgelig tillades rsh som root ikke, og
rsh som andre er holdt nede med hård hånd.
Derudover er root adgang ikke muligt for andre end os i administrationen.

En ond mand med en linux maskine skal først forbi 6 vagter med skarpladte
pistoler, en metaldetektor, en sluse som kræver adgangskort, en snes
kameraer og en sluse-dør med kode (som den onde mand ikke kender) før han
ankommer til vores net.

Derudover skal den onde mand først finde stedet, hvilket kan være ganske
svært da intet udefra angiver hvad der er bagved murene.

> > > Du har læst den med VAX-assembler, næspas?
> >
> > Creo que si :
> >
> > 070100002c000000000000000000000000000000000000000000000000000000
> > 0000dd8fff010000dd8f27000000fb02ef07000000fb01ef070000000000bc8f
> > 8800040000bc012f65746300
>
> Det kunne godt se sådan ud. Den historie imponerer mig stadig.

Ja. Om ikke andet så lærer man : Don't panic.
Jeg har flere gange reddet situationer ved lige at tænke lidt først _før_
reboot.
Forleden havde vi f.eks. en maskine hvor konsollen var død og man kunne ikke
telnette til den. Den så dog ud til stadig at afvikle sine databaser OK og
den var i produktion, så vi var ikke meget for at trykke på knappen.
Løsningen blev at jeg vidste jeg havde et program kørende hvert 5. minut fra
crontab som hentede nogle parametre til et andet program i en ekstern
database. Herefter blev det andet program kaldt med disse parametre, så jeg
ændrede disse parametre fra "-F -t -n20 -i250" til -"F -t -n20 -i250;
xterm -display minmaskine:0.0 &" og ventede. Tada.wav access til maskinen.
Det er anden gang jeg bruger den


l8r/Jspr



Thorbjørn Ravn Ander~ (15-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 15-03-01 12:16

Jesper Frank Nemholt wrote:

> En ond mand med en linux maskine skal først forbi 6 vagter med skarpladte
> pistoler, en metaldetektor, en sluse som kræver adgangskort, en snes
> kameraer og en sluse-dør med kode (som den onde mand ikke kender) før han
> ankommer til vores net.

Interessant sted. Får I nogensinde varme pizzaer?

> > Det kunne godt se sådan ud. Den historie imponerer mig stadig.
>
> Ja. Om ikke andet så lærer man : Don't panic.
> Jeg har flere gange reddet situationer ved lige at tænke lidt først _før_
> reboot.
> Forleden havde vi f.eks. en maskine hvor konsollen var død og man kunne ikke
> telnette til den. Den så dog ud til stadig at afvikle sine databaser OK og
> den var i produktion, så vi var ikke meget for at trykke på knappen.
> Løsningen blev at jeg vidste jeg havde et program kørende hvert 5. minut fra
> crontab som hentede nogle parametre til et andet program i en ekstern
> database. Herefter blev det andet program kaldt med disse parametre, så jeg
> ændrede disse parametre fra "-F -t -n20 -i250" til -"F -t -n20 -i250;
> xterm -display minmaskine:0.0 &" og ventede. Tada.wav access til maskinen.
> Det er anden gang jeg bruger den

Fiks - taget ad notam.

Så er det godt at man ikke er paranoid i sin kode med de argumenter man
får serveret udefra.

Min personlige oplevelse som jeg mindst har lyst til at gentage var at
nulstille et rodpassword på en BSDI/386 ved hjælp af en
installations-CD. Uf. Ikke engang "vi" virkede...

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Thorbjørn Ravn Ander~ (14-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-03-01 11:29

Peter Makholm wrote:
>
> Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> writes:
>
> > Ineffektivt. Det er hurtigere at skrive cat /dev/random >
> > /dev/hdwhatever.
>
> Det er måske hurtigere at skrive, men bruger du linux skel du overveje
> om du har brug for at overskrive harddisken med cryptografisk sikker
> tilfældighed. Ellers vil `cat /dev/urandom > /dev/hda` være hurtigere.

Spørgsmålet er om CPU'en er hurtig nok til at følge med disken med de
kryptografisk sikre data?

Det må komme an på en prøve.

Uanset hvad, er det forholdsvist sikkert at afbryde den efter et minuts
tid. Herefter skulle al nøgleinformation være overskrevet, og herefter
kræver det mere end almindelig indsigt i det pågældende filsystem at
kunne reetablere noget.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Lars Balker Rasmusse~ (13-03-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 13-03-01 09:57

"Jesper Frank Nemholt" <jfn@dassic.com> writes:
> kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print $2}'`

Go for simple :)

kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`
--
Lars Balker Rasmussen "Woo hoo!?"

Mogens Kjaer (13-03-2001)
Kommentar
Fra : Mogens Kjaer


Dato : 13-03-01 12:59

Lars Balker Rasmussen wrote:
>
> "Jesper Frank Nemholt" <jfn@dassic.com> writes:
> > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print $2}'`
>
> Go for simple :)
>
> kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`

Kan man ikke bruge:

killall statdb_client.pl

Mogens
--
Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Lars Balker Rasmusse~ (13-03-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 13-03-01 13:06

Mogens Kjaer <mk@crc.dk> writes:
> Lars Balker Rasmussen wrote:
> > "Jesper Frank Nemholt" <jfn@dassic.com> writes:
> > > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print $2}'`
> >
> > Go for simple :)
> >
> > kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`
>
> Kan man ikke bruge:
>
> killall statdb_client.pl

Nej. Det vil virke på nogle af OS'erne, men på f.eks. Solaris checker
killall ikke om der er argumenter, den gør bare det dens navn siger[1].

På Solaris kan man bruge pkill, men det virker sikkert heller ikke på
alle OSerne Jesper kører på.

[1] Man skal dog være root...
--
Lars Balker Rasmussen "Woo hoo!?"

Torben Simonsen (13-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 13-03-01 13:20

Lars Balker Rasmussen <lars@balker.org> writes:

> "Jesper Frank Nemholt" <jfn@dassic.com> writes:
> > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print $2}'`
>
> Go for simple :)
>
> kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`

Hmm, får du ikke PID'en for grep med på denne måde. OK, den er selvfølgelig
efter al sandsynlighed død alligevel, når kill modtager outputtet fra pipen,
men det virker lidt usmukt at smide signaler efter ikke-eksisterende
processer.

Desuden starter du en proces ekstra. Når man alligevel skal bruge awk til
at pille et enkelt felt ud, så kan man vel lige så godt bruge den til at
lave regex-matchningen også?

--
-- Torben.

Lars Balker Rasmusse~ (13-03-2001)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 13-03-01 14:05

Torben Simonsen <ts@biograferne.dk> writes:
> Lars Balker Rasmussen <lars@balker.org> writes:
> > Go for simple :)
> >
> > kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`
>
> Hmm, får du ikke PID'en for grep med på denne måde.

Nej, for grep-regexen matcher ikke sig selv. Det er det der er
pointen med []'erne.

> Desuden starter du en proces ekstra. Når man alligevel skal bruge awk til
> at pille et enkelt felt ud, så kan man vel lige så godt bruge den til at
> lave regex-matchningen også?

Jo, men Jesper kunne jo ikke få det til at virke på alle hans
platforme. Og hvad er en proces mellem venner...
--
Lars Balker Rasmussen "Woo hoo!?"

Torben Simonsen (13-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 13-03-01 15:15

Lars Balker Rasmussen <lars@balker.org> writes:

> Torben Simonsen <ts@biograferne.dk> writes:
> > Lars Balker Rasmussen <lars@balker.org> writes:
> > >
> > > kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`
> >
> > Hmm, får du ikke PID'en for grep med på denne måde.
>
> Nej, for grep-regexen matcher ikke sig selv. Det er det der er
> pointen med []'erne.

Aaaah, smart, det havde jeg overset. Det lille trick er egentlig ret
anvendeligt i mange sammenhænge.

> > Desuden starter du en proces ekstra. Når man alligevel skal bruge awk til
> > at pille et enkelt felt ud, så kan man vel lige så godt bruge den til at
> > lave regex-matchningen også?
>
> Jo, men Jesper kunne jo ikke få det til at virke på alle hans
> platforme.

Næh, jeg kan bare ikke forstå hvorfor. Vi er jo ikke ligefrem ude i at
bruge vildt avancerede features i awk.

> Og hvad er en proces mellem venner...

Det er rigtigt. Prisen for at starte en ekstra grep er nok til at overskue.

--
-- Torben.

Jesper Frank Nemholt (13-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 13-03-01 21:02

"Lars Balker Rasmussen" <lars@balker.org> wrote in message
news:u4rwy11y7.fsf@balker.org...
> "Jesper Frank Nemholt" <jfn@dassic.com> writes:
> > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print
$2}'`
>
> Go for simple :)
>
> kill `ps -fu statdb | grep '[s]tatdb_client\.pl' | awk '{print $2}'`

Nej, jeg er lige blevet så glad for at lave alt i awk


l8r/Jspr



frank damgaard (13-03-2001)
Kommentar
Fra : frank damgaard


Dato : 13-03-01 10:14

Jesper Frank Nemholt <jfn@dassic.com> wrote:

> Jeg er lige ved at rette et rc script til så det kører korrekt på hhv.
.....> Tru64, Solaris, Linux & NetBSD.

> kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print
> $2}'`

> Tilsyneladende er det noget med undescore & punktum i min regex
> (statdb_client.pl), men hvordan escaper jeg mig ud af det ?

Nej , nu har jeg med SuSe ikke samme programmer, men
man skal man huske at ps kun viser de første COLUMNS kolonner/tegn.

så måske hele filenavnet statdb_client.pl ikke vises...

så prøv

1) check output med
ps -fu statdb | less

2) prøv at tilføje --cols=250 til ps kommandoen:
ps --colw=250 -fu stadb |less

--
Frank Damgaard


Jesper Frank Nemholt (13-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 13-03-01 21:16

"frank damgaard" <frank.damgaard@no.spam> wrote in message
news:ga4pn9.5et@mkb84.ftn...
> Jesper Frank Nemholt <jfn@dassic.com> wrote:
>
> > Jeg er lige ved at rette et rc script til så det kører korrekt på hhv.
> ....> Tru64, Solaris, Linux & NetBSD.
>
> > kill `ps -fu statdb | awk '$0 ~ /statdb_client.pl/ && $0 !~ /awk/ {print
> > $2}'`
>
> > Tilsyneladende er det noget med undescore & punktum i min regex
> > (statdb_client.pl), men hvordan escaper jeg mig ud af det ?
>
> Nej , nu har jeg med SuSe ikke samme programmer, men
> man skal man huske at ps kun viser de første COLUMNS kolonner/tegn.
>
> så måske hele filenavnet statdb_client.pl ikke vises...
>
> så prøv
>
> 1) check output med
> ps -fu statdb | less
>
> 2) prøv at tilføje --cols=250 til ps kommandoen:
> ps --colw=250 -fu stadb |less

Solaris :

# ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 22424 1 0 00:40:43 pts/3 0:14 /usr/bin/perl -w
/opt/statdb/client/statdb_client.pl -v -l=/opt/statdb/log/stat


Tru64 :

matisse.dassic.com> ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 430426 1 0.0 Mar 10 ?? 0:28.08
/usr/opt/statdb/client/statdb_client.pl -v -l=/usr/opt/statdb/log/statdb_cli
ent.log -statdb=statdb -statdb-backup=statdb-


Linux :

[statdb@miro rc]$ ps -fu statdb
UID PID PPID C STIME TTY TIME CMD
statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
/usr/local/statdb/client/statdb_client.pl -v -l=/usr/local/statdb/log/statdb
_client.log -statdb=statdb -statdb-backup=statdb

[statdb@miro rc]$ ps -fu statdb | less
UID PID PPID C STIME TTY TIME CMD
statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
/usr/local/statdb/client

[statdb@miro rc]$ ps --cols=250 -fu statdb | less
UID PID PPID C STIME TTY TIME CMD
statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
/usr/local/statdb/client/statdb_client.pl -v -l=/usr/local/statdb/log/statdb
_client.log -statdb=statdb -statdb-backup=statdb -backup -port=551234 -port-
backup=551235



l8r/Jspr



Torben Simonsen (13-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 13-03-01 21:43

"Jesper Frank Nemholt" <jfn@dassic.com> writes:

> [statdb@miro rc]$ ps -fu statdb | less
> UID PID PPID C STIME TTY TIME CMD
> statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
> /usr/local/statdb/client

Hov, her gik det jo netop galt - på grund af for få tegn i linien.

Virker din awk-ting så ikke, hvis du sætter --cols 250 på din ps?

--
-- Torben.

Jesper Frank Nemholt (13-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 13-03-01 22:35

"Torben Simonsen" <ts@biograferne.dk> wrote in message
news:m3n1apcsds.fsf@pc115235.stofanet.dk...
> "Jesper Frank Nemholt" <jfn@dassic.com> writes:
>
> > [statdb@miro rc]$ ps -fu statdb | less
> > UID PID PPID C STIME TTY TIME CMD
> > statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
> > /usr/local/statdb/client
>
> Hov, her gik det jo netop galt - på grund af for få tegn i linien.
>
> Virker din awk-ting så ikke, hvis du sætter --cols 250 på din ps?

Jo (på Linux, ps på de andre kender ikke --cols), men ps -fu uden pipe til
less returnerer den fulde linie med det hele..... burde awk så ikke parse
den fulde linie eller ?


l8r/Jspr



Torben Simonsen (13-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 13-03-01 22:39

"Jesper Frank Nemholt" <jfn@dassic.com> writes:

> "Torben Simonsen" <ts@biograferne.dk> wrote in message
> news:m3n1apcsds.fsf@pc115235.stofanet.dk...
> > "Jesper Frank Nemholt" <jfn@dassic.com> writes:
> >
> > > [statdb@miro rc]$ ps -fu statdb | less
> > > UID PID PPID C STIME TTY TIME CMD
> > > statdb 20269 1 0 Mar12 pts/1 00:00:03 perl -w
> > > /usr/local/statdb/client
> >
> > Hov, her gik det jo netop galt - på grund af for få tegn i linien.
> >
> > Virker din awk-ting så ikke, hvis du sætter --cols 250 på din ps?
>
> Jo (på Linux, ps på de andre kender ikke --cols), men ps -fu uden pipe til
> less returnerer den fulde linie med det hele..... burde awk så ikke parse
> den fulde linie eller ?

Måske kigger Linux-ps på, om den skriver til en tty eller til en pipe
og laver om på sit output afhængigt af det (på samme måde som f.eks. ls)?

--
-- Torben.

Torben Simonsen (14-03-2001)
Kommentar
Fra : Torben Simonsen


Dato : 14-03-01 00:57

Torben Simonsen <ts@biograferne.dk> writes:

> > Jo (på Linux, ps på de andre kender ikke --cols), men ps -fu uden pipe til
> > less returnerer den fulde linie med det hele..... burde awk så ikke parse
> > den fulde linie eller ?
>
> Måske kigger Linux-ps på, om den skriver til en tty eller til en pipe
> og laver om på sit output afhængigt af det (på samme måde som f.eks. ls)?

Jeg follow-up'er lige lidt på mig selv. Hvis de andre ps'er ikke kender
--cols, så kender de måske -w (for 'wide' output). Måske kan du få følgende
linie til at virke på alle platforme:

kill `ps -fwu statdb | awk '/[s]tatdb_client\.pl/ {print $2}'`

(med tak til Lars Balker for tricket med [] i regex'en for at undgå det
noget usmukke "&& !/awk/").

--
-- Torben.

Jesper Frank Nemholt (14-03-2001)
Kommentar
Fra : Jesper Frank Nemholt


Dato : 14-03-01 04:52

"Torben Simonsen" <ts@biograferne.dk> wrote in message
news:m3bsr5rzmh.fsf@pc115235.stofanet.dk...
> Torben Simonsen <ts@biograferne.dk> writes:
>
> > > Jo (på Linux, ps på de andre kender ikke --cols), men ps -fu uden pipe
til
> > > less returnerer den fulde linie med det hele..... burde awk så ikke
parse
> > > den fulde linie eller ?
> >
> > Måske kigger Linux-ps på, om den skriver til en tty eller til en pipe
> > og laver om på sit output afhængigt af det (på samme måde som f.eks.
ls)?

Det kunne tænkes. Det vil jeg lige afprøve.

> Jeg follow-up'er lige lidt på mig selv. Hvis de andre ps'er ikke kender
> --cols, så kender de måske -w (for 'wide' output). Måske kan du få
følgende
> linie til at virke på alle platforme:
>
> kill `ps -fwu statdb | awk '/[s]tatdb_client\.pl/ {print $2}'`

Nej den æder Solaris ikke.
Jeg tror jeg laver en undtagelse og benytter --cols på Linux med mindre at
jeg altså finder *løsningen*.

Takker for input fra diverse :)


l8r/Jspr



Mogens Kjaer (14-03-2001)
Kommentar
Fra : Mogens Kjaer


Dato : 14-03-01 11:59

Jesper Frank Nemholt wrote:

> Nej den æder Solaris ikke.
> Jeg tror jeg laver en undtagelse og benytter --cols på Linux med mindre at
> jeg altså finder *løsningen*.

Du kan sætte environment variablen COLUMNS til fx 250. Det æder Linux'
ps,
de andre er nok ligeglade.

Mogens

--
Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Laust Brock-Nannesta~ (14-03-2001)
Kommentar
Fra : Laust Brock-Nannesta~


Dato : 14-03-01 14:49

Torben Simonsen <ts@biograferne.dk> wrote:

> kill `ps -fwu statdb | awk '/[s]tatdb_client\.pl/ {print $2}'`
>
> (med tak til Lars Balker for tricket med [] i regex'en for at undgå det
> noget usmukke "&& !/awk/").

'[s]' er vel egentlig ikke nødvendigt når det regulære udtryk alligevel
indeholder '\.'? det gælder også for eksemplet med grep.


mvh,

Laust

frank damgaard (14-03-2001)
Kommentar
Fra : frank damgaard


Dato : 14-03-01 14:28

Jesper Frank Nemholt <jfn@dassic.com> wrote:

>> Virker din awk-ting så ikke, hvis du sætter --cols 250 på din ps?

> Jo (på Linux, ps på de andre kender ikke --cols), men ps -fu uden pipe til
> less returnerer den fulde linie med det hele..... burde awk så ikke parse
> den fulde linie eller ?

Jeg får ikke den fulde linie, heller ikke uden pipe til less.
Det afhænger af "term" opsætning og COLUMNS mv.
Men lave dog en lille switch i scriptet, sopm sætter "MYPSOPTS"
afhængig af OS.

f.eks.
if [ -e /bin/uname ] ; then
MYSPSOPTS="--cols=250"
else
MYPSOPTS=""
fi
....
ps $MYPSOPTS ....

--
Frank Damgaard


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408893
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste