запустить скрипт от имени root bash - PullRequest
0 голосов
/ 16 мая 2019

У меня есть скрипт ниже bash, который я пытаюсь запланировать как работу cron.У меня это есть в /etc/cron.d/cronjob

*/1 * * * * root /home/area/reboot.sh

Но это не работает ... если я запускаю скрипт из командной строки, используя

sudo /home/area/reboot.sh

, если работает нормально

ниже находится скрипт

#!/bin/bash

    if [[ `awk '{print $0/60;}' /proc/uptime | cut -d . -f1` -gt 10 ]];then
    echo 1 > /proc/sys/kernel/sysrq
    echo b > /proc/sysrq-trigger
    fi

Ответы [ 5 ]

0 голосов
/ 17 мая 2019

исправили это с помощью ниже

echo 1 | sudo tee /proc/sys/kernel/sysrq
echo b | sudo tee /proc/sysrq-trigger
0 голосов
/ 17 мая 2019

Убедитесь, что у вас есть разрешение на выполнение для файла cron.

chmod + x /home/area/reboot.sh

Также попробуйте добавить sh перед сценарием.Так в crontab -e

* / 1 * * * * / bin / sh /home/area/reboot.sh

0 голосов
/ 16 мая 2019

Установить путь в начале вашего скрипта:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 голосов
/ 17 мая 2019

В этой задаче есть вводящая в заблуждение информация.

Во-первых, для системных таблиц cron (/ etc / crontab, /etc/cron.d/*) требуется имя пользователя. Задание выполняется под окружением или тем пользователем. Это отличие от обычного пользовательского crontab. Так что это правильно:

*/1 * * * * root /home/area/reboot.sh
            ^^^^
           username

О */1: Это означает: каждую минуту, которая может быть разделена на 1 без остатка. Так же, как *.

Ответ на ваш вопрос: Понятия не имею, что происходит не так. Настройка PATH= или SHELL= может быть решением или нет. В любом случае, setup MAILTO= и cron отправят вам сообщение об ошибках. Прочитайте man 5 crontab. Если он недоступен в вашей системе, отправьте его в Google.

0 голосов
/ 16 мая 2019

Просто используйте sudo crontab -e для редактирования crontab

Также используйте

*/1 * * * * /home/area/reboot.sh

вместо

*/1 * * * * root /home/area/reboot.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...