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