Назад | Перейти на главную страницу

Запуск команды crontab каждые 59 секунд

Каков наиболее удобный способ настроить запуск команды crontab каждые 59 секунд, кроме запуска sleep 59 в начале моего сценария?

Если других предложений нет, будет выполняться sleep 59 отложить все мои другие записи cron, запланированные для выполнения, дождаться завершения спящего?

Обновить Зачем мне это вообще нужно? Я написал небольшой скрипт, чтобы узнать, кто заходил в систему в последнюю минуту, он выглядит так:

who | grep `date +%R` | awk '{ print $1 " joins us." }' | write $USER

Чтобы он работал и не усложнял дело, мне нужно, чтобы он запустился в конце минуты.

Это имеет date команда, которая смотрит на предыдущую минуту:

who | grep `date -d "now -1 min" +%R` | awk '{ print $1 " joins us." }' | write $USER

Тогда вы можете запустить его в минуту с помощью cron:

* * * * * /some/dir/scriptname

Вы даже можете сделать это:

who | grep `date -d "now -60 sec" +%R` | awk '{ print $1 " joins us." }' | write $USER

редактировать: Вот халява:

awk 'FNR > 2 {printf ",\n"} {printf "%s", name; name = $0; next} END {conj = " and\n"; if (FNR == 1) {singular = "s"; conj = ""}; printf "%s%s join%s us\n", conj, name, singular}'

Вывод с запятыми, «и» и согласование глаголов во множественном числе и удаление повторяющейся фразы (вы можете заменить новые строки (кроме последней) пробелами, если хотите, чтобы все это было в одной строке):

Аллен присоединяется к нам

или

счет и
Крис присоединяйся к нам

или

Дэйв,
Эллен и
Фелисити, присоединяйся к нам

Лучшее, что вы можете сделать с помощью cron, - это запускать его каждую минуту:

# minute hour dom mon dow
* * * * * /path/to/command

sleep 59 не будет откладывать другие задачи.

Но пахнет опасностью. если ты необходимость этот уровень детализации, то я предсказываю, что вы не застрянете.

Если вы объясните причину своих требований, вы можете обнаружить, что кто-то может предложить лучшее лекарство.

cron просто не так точен. Если вам нужен такой уровень точности, вам следует подумать о написании демона.

Рассматривали ли вы использование tail -f в auth.log и просто постоянное наблюдение за логинами?

Лучше добавить сценарий ко всем пользователям файла .login, или .bashrc, или аналогичного.

1) Он запускался только тогда, когда кто-то входил в систему, поэтому более эффективно. 2) он будет работать мгновенно, когда кто-то войдет в систему, поэтому без задержек.

Я просто упомяну это zsh имеет watch встроенный это делает именно это. (Хотя, чтобы увидеть это, вы должны использовать zsh и свою оболочку: в других терминалах он не появится.)

Короче, добавьте это в свой .zshrc:

watch=notme