Bash Вывод скрипта отличается при прямом перенаправлении и запуске cron - PullRequest
0 голосов
/ 12 апреля 2020

Я написал следующий Bash скрипт

TIME=$( date '+%F %H:%M:%S')
MYRUNLEVEL=$(runlevel | cut -d ' ' -f2)

printf "Script started  successfully at  $TIME"
printf ",    Runlevel is $MYRUNLEVEL"
printf "\n"

Когда я запускаю крипту с моего терминала, вот так

$ backup_script.sh >> test_output.txt
$ cat test_output.txt 
Script started  successfully at  2020-04-12 14:53:19,    Runlevel is 5

Я правильно выписал уровень запуска. Но когда я запускаю скрипт из cronjob, уровень выполнения не записывается:

Синтаксис Crontab:

 * * * * * /home/philip//bin/backup_script.sh >> /home/philip/LinuxMint/Test_script/cron_output

Вывод в файл cron_output:

Script started  successfully at  2020-04-12 14:48:01,    Runlevel is
Script started  successfully at  2020-04-12 14:49:01,    Runlevel is
Script started  successfully at  2020-04-12 14:50:01,    Runlevel is
Script started  successfully at  2020-04-12 14:51:01,    Runlevel is
Script started  successfully at  2020-04-12 14:52:01,    Runlevel is
Script started  successfully at  2020-04-12 14:53:01,    Runlevel is
Script started  successfully at  2020-04-12 14:54:01,    Runlevel is
Script started  successfully at  2020-04-12 14:55:01,    Runlevel is
Script started  successfully at  2020-04-12 14:56:02,    Runlevel is

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Я предполагаю, что cut -d ' ' -f2 в MYRUNLEVEL=$(runlevel | cut -d ' ' -f2) делает вывод пустым. Попробуйте использовать просто MYRUNLEVEL="$(runlevel)" и посмотрите, получите ли вы то, что хотите. :)

0 голосов
/ 13 апреля 2020

Проблема решена:

При запуске скрипта в качестве cronjob не удалось найти команду runlevel. Добавление полного пути к уровню запуска решило проблему

#!/bin/bash
TIME=$( date '+%F %H:%M:%S')
MYRUNLEVEL=$(/sbin/runlevel | cut -d ' ' -f2)

printf "Script started  successfully at  $TIME"
printf ",    Runlevel is $MYRUNLEVEL "

crontab синтаксис:

* * * * * /home/philip//bin/backup_script.sh >> /home/philip/LinuxMint/Test_script/cron_output

дает вывод в cron_output:

Script started  successfully at  2020-04-13 16:04:01,    Runlevel is 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...