εκτέλεση 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