Як я періодично запускаю команду з дуже коротким інтервалом і отримую повернення?


12

Мені потрібно зателефонувати до певної команди з інтервалом близько 5 сек. Як я можу налаштувати демон / процес, що працює у фоновому режимі чи щось подібне? Я подивився на кронштейни, але мінімальний інтервал, здається, становить 1 хвилину. Будь-яка рада цінується;)

Fedora - це система.

Команда EDIT була б базовим сценарієм, так що "дивитися" я б не зробив це, думаю.

Відповіді:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

для чого відмовиться? що якщо я біжу без цього?
Ганс

@Marcel, disownвидаляє останнє завдання з таблиці завдань оболонки, роблячи це свого роду демон, як ви запитали. Це не справжній демон, тому що він все ще приєднаний до терміналу і знаходиться в тій же групі процесів, але він буде продовжувати працювати після закриття оболонки.
Джуліано

гаразд чудово, це спрацювало б: D Просто для цікавості, як би я "зробив" демон?
Ганс

@Marcel найпростіший спосіб - викликати демона (3) з C або іншої мови з доступом до бібліотеки (не зі скрипту оболонки). Це важкий шлях .
Джуліано

14

Як ви вважаєте, чому "дивитися" не вийде?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

що робити, якщо я вийду? сценарій повинен продовжувати працювати.
Ганс

Він зупиниться, але ви можете використовувати nohup watch -n 5 ./periodic.sh > periodic.log &та зберігати вихід.
naufraghi

для трубопроводів використовуйте "" цитування, тому що команда th "надається" sh -c ", що означає, що вам може знадобитися використовувати додаткове котирування, щоб отримати бажаний ефект"
andrej

2

Може, з ногупом? Він розроблений для того, щоб робота запускалася після закриття оболонки.

Ви також можете використовувати екрани.


1

watchКоманда підходить у вашому випадку, я хотів би використовувати термінальний мультиплексор (наприклад tmux, екран і т.д.) , а потім виконати команду з допомогою

watch -n 5 ./script.sh

У цьому випадку, навіть якщо ви закриєте термінал або ssh-з'єднання з машиною, сценарій все одно буде запущений.

Єдине обмеження такого підходу полягає в тому, що скрипт запускається кожні 5 секунд, лише якщо він завершив його виконання протягом цього інтервалу часу.


Оскільки ОП прямо заявив, що, на його думку, watchцього не зробить, будь ласка, поясніть, чому ваша відповідь долає це обмеження або в який момент ви вважаєте, що ОП помилилася з приводу watchтого, що вона не підходить для виконання завдання.
AdminBee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.