Рейтинг:1

crontab не запускает мой скрипт

флаг in

Я пытался запустить скрипт при запуске, но не смог. кронтаб

@reboot /bin/sleep 8s && /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1

Скрипт работает нормально, если я запускаю его вручную.

#!/бин/баш

# Если запущен как root, то перезапустите как пользователь "user":
если [ "$(id -u)" -eq 0 ]; тогда
    exec sudo -H -u пользователь $0 "$@"
    echo "Это никогда не достигается.";
фи
echo "Это выполняется от имени пользователя $(id -un)";

пока [ "правда" ]
делать
        VPNCON=$(/bin/nmcli con | /bin/grep PureVPN_PPTP | /bin/cut -f18 -d "")
        если [[ $VPNCON != ens3 ]]; тогда
                /bin/echo "Отключено, попытка повторного подключения..."
                (/bin/sleep 1s && /bin/nmcli con up uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
        elif IP=$(ifconfig ppp0 | awk '/inet/{print $2; exit}')
                (/бин/сон 5с)
                [ "$IP" != "xxx.xxxx.xxx.xxx" ]; тогда
                /bin/echo "неверный IP-адрес: $IP"
                (/bin/sleep 1s && /bin/nmcli con down uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4 && /bin/sleep 2s && /bin/nmcli con up uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
        еще
                /bin/echo "Уже подключено!"
        фи
        /бен/сон 30
сделано

С момента первого поста я немного поработал над сценарием. Он отлично работает, выполняется вручную.

При выполнении кроном от имени пользователя я получаю следующую ошибку:

Это работает как пользователь
Отключился, пытаюсь подключиться...
Ошибка: не удалось активировать соединение: нет прав для управления сетью.

Почему-то пользователь с cron не имеет таких же прав, как на себя. Проблема в том, что при запуске от имени root он также терпит неудачу. Учетные данные для vpn хранятся в наборе ключей пользователей, поэтому root не может установить соединение: -/

флаг vn
Отвечает ли это на ваш вопрос? [Не удается создать задание crontab для моей программы scrapy] (https://askubuntu.com/questions/1288111/cannot-create-a-crontab-job-for-my-scrapy-program)
флаг hr
Я бы посоветовал вам начать с записи вывода + ошибок из вашего скрипта в журнал ex. `@reboot /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1`. Изучение журнала может указать, в чем проблема.
user535733 avatar
флаг cn
Когда вы узнаете, как запускать задания @reboot, часто стоит потратить время на изучение того, как цели systemd работают при запуске. Использование целей дает вам больше контроля, чем cronjobs.
Soren A avatar
флаг mx
Вы можете проверить в /var/log/syslog, если cron запускает скрипт.
Sturmkater avatar
флаг in
@PabloBianchi, к сожалению, нет. Но хорошо знать, как легко добавить весь путь!
Sturmkater avatar
флаг in
@steeldriver Хорошо!!! Ведение журнала очень удобно для устранения неполадок. Спасибо
флаг hr
@Sturmkater похоже на то, что вы должны делать через приложения запуска вашего пользователя, а не через cron. См., например, [Как мне запускать приложения автоматически при входе в систему?](https://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login)
Рейтинг:1
флаг it

Вакансии проходят через хрон, или же системад сценарии запуска не запускаются в той же среде выполнения, что и на вашем рабочем столе. системад сценарии запуска запускаются как корень. Ни один из ваших ДОРОЖКА изменения или другие параметры переменных среды автоматически распространяются на ваш хрон работа. Например, нет $ ДИСПЛЕЙ, поэтому программы с графическим интерфейсом нуждаются в особом подходе (читай человек).

Можно установить переменные окружения для всех своих хрон рабочие места в кронтаб файл Читать человек 5 кронтаб.

Посмотрите на результаты echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== псевдоним ===";псевдоним в каждой из ваших сред.

Поскольку команда часть кронтаб строка по умолчанию интерпретируется /бин/ш, который имеет более простой синтаксис, чем /бин/баш, рекомендую иметь команда быть призывом к бить скрипт (исполняемый, смонтированный, начинается с #!/бин/баш), который настраивает среду, а затем вызывает нужную программу.

Рейтинг:0
флаг in

Спасибо, Steeldrive :-) Я думаю, как только вы начнете с графического интерфейса, вы будете прокляты, чтобы придерживаться его. Ваше предложение работает как шарм.

@Sturmkater это похоже на то, что вы должны делать через свой приложения запуска пользователя, а не через cron. См. например Как я запускаю приложения автоматически при входе в систему? сталдрайвер

Ответить или комментировать

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