Автор Тема: Як налаштувати запуск та зупинку програми за розкладом?  (Прочитано 5200 раз)

Offline max5555

  • Full Member
  • ***
  • Повідомлень: 226
  • Karma: 3
    • Ubuntu-forward, Украина
Необхідно кожен день у певний час запускати програму, та через деякий час її закрити.
Щоб запустити програму можна використати Kalarm, але як після цього автоматично закрити програму?

AZCat

  • Гість

Offline swift

  • Administrator
  • Hero Member
  • *****
  • Повідомлень: 549
  • Karma: 7
cron не вміє закривати програму.
/dev/null > /dev/snd

AZCat

  • Гість
але може виконати kill за розкладом :)

Offline max5555

  • Full Member
  • ***
  • Повідомлень: 226
  • Karma: 3
    • Ubuntu-forward, Украина
але може виконати kill за розкладом :)

Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.

Я пробував закривати програми за допомогою kill з сигналами 3, 10, 12, 15, 18, 19 - шукав той сигнал, що отримує програма, коли їй роблять "Alt+F4" - не знайшов.

Окрім того, наскільки я зрозумів, треба писати окремий скрипт для знаходження PID процессу використовуючи ім'я програми.

Offline Юра

  • Full Member
  • ***
  • Повідомлень: 201
  • Karma: 1
    • Весь Я [майже]
але може виконати kill за розкладом :)

Звичайно може. І не тільки cron ;)
Але kill це дуже грубий метод, це не дає програмі можливості зберегти ту інформацію, що на час виконання kill зберігалася у тимчасових файлах.... шукав той сигнал, що отримує програма, коли їй роблять "Alt+F4" - не знайшов.
kill - це правильний метод, якщо програма сама не передбачає іншого методу.
Щодо сигналів для певних програм - читай їх мани, вони мусять про це писати (USR1, USR2,...).

AZCat

  • Гість
але може виконати 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

Offline maranoid

  • Jr. Member
  • **
  • Повідомлень: 64
  • Karma: 0

AZCat

  • Гість
але може виконати 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]`

Offline max5555

  • Full Member
  • ***
  • Повідомлень: 226
  • Karma: 3
    • Ubuntu-forward, Украина
Дякую maranoid
Цитувати
killall <program name>
здається це найкращий варіант, адже ця програма безпосередньо передбачає завершення роботи саме за ім'ям.  :)

За замовчуванням, як kill, так і killall надсилають сигнал SIGTERM (-s 15), який відповідає найбільш правильному та коректному завершенню процесу зі збереженням всіх даних, принаймні так зазвичай стверджується. Тут є невеличке зауваження, адже, після надсилання цього сигналу програма не запропонує вам зберегти усі зміни, як це відбувається при завершенні через "Alt+F4", тобто немає впевненості, що процес що завершується, дійсно має можливість зберегти всю нову інформацію.