εκτέλεση shell commands μέσα σε perl script (SOLVED)
Γιώργος Πάλλας
gpall at ccf.auth.gr
Fri Apr 17 10:42:36 EEST 2009
Michael Iatrou wrote:
> When the date was Thursday 16 April 2009, Γιώργος Πάλλας wrote:
>
>
> ...
>
> @out = `top -bn1`;
>
>
>> while($line = shift @out){
>> last if ($line =~ /%CPU/);
>> }
>>
>> # Auti i line prepei na exei ton top CPU user
>> $line = shift @out;
>>
>> @f = split(/\s+/, $line);
>>
>> print "pid: $f[0], cpu: $f[8], command: $f[11]\n";
>>
>> @out = `renice 19 $f[0]`;
>> print @out;
>>
>> @out = `ionice -c3 -p $f[0]`;
>> print @out;
>>
>>
>> ======================================
>>
>> Δεν μπορώ να καταλάβω γιατί μου βγάζει output:
>>
>> mordor:/home/gpall# perl /root/proj/katsekala.pl
>> pid: 25074, cpu: 94.5, command: cat
>> sh: -c: line 0: syntax error near unexpected token `('
>> sh: -c: line 0: `renice 19 25074'
>> sh: -c: line 0: syntax error near unexpected token `('
>> sh: -c: line 0: `ionice -c3 -p 25074'
>>
>> Αφού από ό,τι βλέπω, τις εντολές τις φτιάχνει κανονικά ("renice 19
>> 25074" και "ionice -c3 -p 25074"), τότε που βρίσκει αυτην την αναπάντεχη
>> παρένθεση; Εντωμεταξύ αν μέσα στο script αντικαταστήσω τη γραμμή:
>> @out = `renice 19 $f[0]`;
>> με
>> @out = `renice 19 25074'`;
>>
>> τότε αυτό το κομμάτι παίζει. Άρα κάτι έχει να κάνει με την αντικατάσταση
>> της μεταβλητής $f[0] μέσα στην προς εκτέλεση εντολή. Κάνω κάτι λάθος;;
>>
>
> Ασφαλώς, αλλά αφήνεται σαν άσκηση στον αναγνώστη. (hint: είσαι σίγουρος ότι
> δεν υπάρχει παρένθεση; hint++: xxd)
>
>
Κοίτα τι μάθαμε: το top βγάζει πέρα από το ορατό output και ένα κάρο
control characters όταν ΔΕΝ τρέχει σε batch mode...
Thanks Michael!
$ top -n1 | hexdump -c
...
\n C p u ( s ) : 033 [ m 033 ( B 033 [
0000170 3 9 ; 4 9 m 033 [ m 033 ( B 5 .
0000180 1 % 033 [ m 033 ( B 033 [ 3 9 ; 4 9 m
0000190 u s , 033 [ m 033 ( B 033 [ 3 9 ; 4 9
00001a0 m 033 [ m 033 ( B 1 . 7 % 033 [ m
00001b0 033 ( B 033 [ 3 9 ; 4 9 m s y , 033 [
00001c0 m 033 ( B 033 [ 3 9 ; 4 9 m 033 [ m 033
00001d0 ( B 1 . 0 % 033 [ m 033 ( B 033 [
00001e0 3 9 ; 4 9 m n i , 033 [ m 033 ( B 033
00001f0 [ 3 9 ; 4 9 m 033 [ m 033 ( B 8 4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 9953 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20090417/d1b4aa81/attachment.bin>
More information about the Linux-greek-users
mailing list