Utility to kill a program after n seconds

Giorgos Keramidas keramida at ceid.upatras.gr
Sun Sep 1 16:43:01 EEST 2002


On 2002-09-01 13:16 +0000, Nikos Kanellopoulos wrote:
> Μετά από παρακίνηση του Κώστα του Μαϊστρέλη, έγραψα ένα προγραμματάκι
> που τρέχει ένα πρόγραμμα και το σκοτώνει (πρώτα SIGTERM και αν δεν πιάσει,
> SIGKILL) μετά από το χρόνο που καθορίζει ο χρήστης.
> 
> π.χ. 
> $ timek 20 top -p 1 -p 5 -p 23
> θα τρέξει το top για 20 δευτερόλεπτα. 

Μέσα στα οποία 20 δευτερόλεπτα υπάρχει πάντα η πιθανότητα να σκοτώσει
κάποιος το αρχικό child process της timek, και λόγω PID recycling να
το έχει πάρει κάποιος άλλος το συγκεκριμένο PID[1].

Μια λύση θα ήταν να μπορείς να πάρεις από το /proc ή κάπως αλλιώς κι
άλλες πληροφορίες για το process, όπως ώρα που ξεκίνησε να τρέχει,
ποιος το ξεκίνησε, κλπ. και πριν χώσεις το kill[2] να ελέγξεις ότι
ακόμα ισχύουν τα ίδια πράγματα.

[1] Μικρή πιθανότητα, αλλά πάντα υπάρχει.

[2] Το οποίο kill, ειδικά από superuser, δεν υπάρχει τρόπος να το
γλιτώσεις (εφόσον το SIGKILL δεν γίνεται trap).

-- 
FreeBSD: The Power to Serve -- http://www.FreeBSD.org



More information about the Linux-greek-users mailing list