Более важный вопрос: почему вы запускаете команду 10 раз в течение 1 секунды, а не 1 раз в течение 10 секунд? Тебе даже не понадобится петля. Если это мешает кому-то еще ввести пароль и разблокировать компьютер, возможно, вам следует просто изменить пароль и сохранить его при себе.
Есть программное обеспечение для управления временем, вы можете попробовать его, например, Pomodoro:
Это приложение GNOME помогает управлять временем в соответствии с техникой Pomodoro. Он намерен повысить производительность и качество работы, напоминая вам делать короткие перерывы.
Техника Pomodoro основана на двух принципах:
- сосредоточиться на работе в течение ограниченного времени, около получаса,
- очистить свой разум во время перерывов.
Этот рабочий процесс может улучшить концентрацию внимания, физическое здоровье и умственную ловкость в зависимости от того, как вы проводите свои перерывы и насколько строго соблюдаете распорядок дня.
Посмотрите этот вопрос на askubuntu. Доступно ли приложение Pomodoro ? Он также рекомендует tomate среди других.
Если вы хотите "остановить" определенную программу на некоторое время, вы можете использовать kill -STOP pid
или pkill -STOP pattern
, как в
kill -STOP pid
sleep $seconds
kill -CONT pid
Остановка любой программы, из которой вы хотите сделать перерыв, позволит остальной системе работать. Я бы не хотел останавливать что-то более важное, например, оконный менеджер или X/xorg.
Cron не ведет себя точно так же, как терминал обычного пользователя, он может даже не знать, где находятся некоторые команды. Вы можете попробовать:
Выполнение команды от имени пользователя с помощью команды sudo -u [YourUser] command
(см. Man sudo для получения дополнительной информации о -u
).
Добавьте полный путь к команде (найдено с помощью which [command]
или ищите установленные файлы пакета с помощью dpkg
или apt/synaptic и т.д.
Похоже, timeout
ведет себя по-разному, когда он запускается в интерактивном терминале, по сравнению с сценарием. Чтение этой информационной страницы показывает вариант, который, я думаю, вы могли бы использовать:
'--Foreground'
Не создавайте отдельную группу фоновых программ, чтобы управляемая КОМАНДА могла нормально использовать TTY переднего плана. Это необходимо для поддержки команд тайм-аута, не запускаемых непосредственно из интерактивной оболочки, в двух ситуациях.
- КОМАНДА интерактивна и требует чтения с терминала, например
пользователь хочет поддерживать отправку сигналов непосредственно в COMMAND с терминала (например, Ctrl-C)
Обратите внимание, что в этом режиме работы все дочерние элементы команды не будут заблокированы. Также SIGCONT не будет отправляться в COMMAND, так как он обычно не требуется для процессов переднего плана, и может вызывать проблемы с прерывистой доставкой сигналов в программах, которые сами контролируют (например, GDB).