Ubuntu UA
Загальні розділи => Головний => Тема розпочата: max5555 від 2008-06-20, 21:52:49
-
Необхідно кожен день у певний час запускати програму, та через деякий час її закрити.
Щоб запустити програму можна використати Kalarm, але як після цього автоматично закрити програму?
-
man cron
-
cron не вміє закривати програму.
-
але може виконати kill за розкладом :)
-
але може виконати kill за розкладом :)
Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.
Я пробував закривати програми за допомогою kill з сигналами 3, 10, 12, 15, 18, 19 - шукав той сигнал, що отримує програма, коли їй роблять "Alt+F4" - не знайшов.
Окрім того, наскільки я зрозумів, треба писати окремий скрипт для знаходження PID процессу використовуючи ім'я програми.
-
але може виконати kill за розкладом :)
Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.... шукав той сигнал, що отримує програма, коли їй роблять "Alt+F4" - не знайшов.
kill - це правильний метод, якщо програма сама не передбачає іншого методу.
Щодо сигналів для певних програм - читай їх мани, вони мусять про це писати (USR1, USR2,...).
-
але може виконати kill за розкладом :)
Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.
Окрім того, наскільки я зрозумів, треба писати окремий скрипт для знаходження PID процессу використовуючи ім'я програми.
наскільки мені відомо -- різні шедулери -- це "надстройки" над cron...
на рахунок скриптів: kill `ps -A | grep [progname]` -- це вже не працює?.. звичайно, кілл вертае 3 помилки, так як команда ps -A... повертає стрінг типу "pid tty time progname", якщо не помиляюсь за допомогою sed цей ефект забирається...
коротше -- man grep, man kill, man ps, man linux-console-basic-administration :D
-
killall <program name> ;)
-
але може виконати kill за розкладом :)
упс.. пардон..
Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.
Окрім того, наскільки я зрозумів, треба писати окремий скрипт для знаходження PID процессу використовуючи ім'я програми.
наскільки мені відомо -- різні шедулери -- це "надстройки" над cron...
на рахунок скриптів: kill `ps -A | grep [progname]` -- це вже не працює?.. звичайно, кілл вертае 3 помилки, так як команда ps -A... повертає стрінг типу "pid tty time progname", якщо не помиляюсь за допомогою sed цей ефект забирається...
коротше -- man grep, man kill, man ps, man linux-console-basic-administration :D
упс, пардон ::), я тут намутив.. все виявилось набагато простіше :)
kill `pgrep [progname]`
-
Дякую maranoid
killall <program name>
здається це найкращий варіант, адже ця програма безпосередньо передбачає завершення роботи саме за ім'ям. :)
За замовчуванням, як kill, так і killall надсилають сигнал SIGTERM (-s 15), який відповідає найбільш правильному та коректному завершенню процесу зі збереженням всіх даних, принаймні так зазвичай стверджується. Тут є невеличке зауваження, адже, після надсилання цього сигналу програма не запропонує вам зберегти усі зміни, як це відбувається при завершенні через "Alt+F4", тобто немає впевненості, що процес що завершується, дійсно має можливість зберегти всю нову інформацію.