Как найти и запустить сценарий bash?

Согласно man crontab , существует опция -u для добавления имени пользователя.

Чтобы отобразить запланированные задания для пользователя, используется следующее:

crontab -l -u username

И вам необходимо иметь права суперпользователя для его использования. Если вы не являетесь пользователем root , используйте его как:

sudo crontab -l -u username

И, согласно man crond и / etc / crontab , команды нет. чтобы показать пользователей, владеющих вакансиями. Владельцы заданий сохраняются в файлах со следующей структурой:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Таким образом, я думаю, вам придется искать имена пользователей в каждом файле или писать сценарий bash, чтобы выбрать и перечислить их.

Также проверьте этот вопрос: В чем разница между /etc/cron.d и / var / spool / cron?

2
22.02.2017, 10:56
2 ответа

В вашей файловой системе может быть несколько сценариев, вызывающих одно и то же, поэтому поиск его по имени и последующее выполнение вслепую, вероятно, очень плохой идея.

Чтобы найти его, используйте find , как показано Дж. Чомелем в другом ответе на ваш вопрос, или используйте locate :

$ locate script.sh

Это найдет все файлы с именем script.sh в местах, доступных для чтения всем пользователям на основе поиска в базе данных в вашей системе.Обратите внимание, что база данных обновляется на регулярной основе (один раз в день или один раз в неделю, в зависимости от того, как она настроена), поэтому файлы, добавленные с момента последнего сканирования файловой системы, не будут найдены, но это намного быстрее, чем find .

Вы можете использовать select для создания меню, из которого вы можете выбрать правильный сценарий и выполнить его:

$ select script in $( locate script.sh ); do echo "$script"; break; done

Измените echo на команду , чтобы фактически запустите выбранный сценарий, а не просто печатайте его имя.

2
27.01.2020, 21:52
  1. Используйте для него команду find у себя дома:

     find ~ -name script.sh 
     
  2. Если вы ничего не нашли в приведенном выше описании, используйте команду find для этого на всем F / S:

     find / -name script.sh 2> / dev / null { {1}} 

    ( 2> / dev / null позволит избежать отображения ненужных ошибок).

  3. Запустите его:

     /  /script.sh
    

- и все сразу даст; подробнее о том, как найти и выполнить :

find / -name "script.sh" -exec chmod +x {} \; -exec {} \; 2>/dev/null 

(будьте осторожны, если у вас более одного « script.sh », он запустит их все)

{{1} }
6
27.01.2020, 21:52

Теги

Похожие вопросы