εκτέλεση shell commands μέσα σε perl script

Γιώργος Πάλλας gpall at ccf.auth.gr
Thu Apr 16 20:04:24 EEST 2009


Καλησπέρα και χρόνια πολλά σε όλους!

Εχω το παρακάτω απλό scriptάκι:

#!/usr/bin/perl

#  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
#25074 root      39  19  3328  488  420 R 91.5  0.0 194:49.03 cat
# 3003 root      20   0  202m  51m  12m S  6.0  2.6   2:36.22 Xorg
#    4 root      15  -5     0    0    0 S  2.0  0.0   1:39.61 ksoftirqd/0

@out = `top -n1`;

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] μέσα στην προς εκτέλεση εντολή. Κάνω κάτι λάθος;;

-------------- 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/20090416/fe23b9ae/attachment.bin>


More information about the Linux-greek-users mailing list