Я просто изучаю Linux, поэтому, пожалуйста, несите меня, как, возможно, упустили что-то очевидное здесь. В настоящее время я пытаюсь настроить задание cron для запуска пользовательского сценария оболочки. Этот сценарий отлично работает с терминалом, но не через cron. Ниже приведены подробности. Я буду благодарен за понимание у опытных пользователей.Сценарий оболочки, не запущенный через crontab на Linux Mint
System Info
RELEASE=17.3
CODENAME=rosa
EDITION="Cinnamon 64-bit"
DESCRIPTION="Linux Mint 17.3 Rosa"
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=http://www.linuxmint.com/rel_rosa_cinnamon_whatsnew.php
RELEASE_NOTES_URL=http://www.linuxmint.com/rel_rosa_cinnamon.php
USER_GUIDE_URL=help:linuxmint
GRUB_TITLE=Linux Mint 17.3 Cinnamon 64-bit
сценария Пользовательские оболочки
Адрес: /usr/local/bin/make_ls_files.sh
Содержание:
#!/bin/bash
# test script to echo ls stout to files
# (learning cron jobs)
# tilde path not working in cron, trying full path
# ls > ~/ls_file_$(date +%F_%H-%M-%S).log
ls > /home/zion/ls_file_$(date +%F_%H-%M-%S).log
сумы t работает отлично от терминала (от любого cwd
), он выводит файл /home/zion/ls_file_2016-11-17_17-38-37.log
с выходом ls
.
Теперь у меня есть настроить хрон работу через crontab -e
:
# create text files every minute:
PATH=/usr:/usr/bin:/usr/local/bin
* * * * * make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1
я вижу в системном журнале, что это на самом деле работает, но не выход или войти запись не создается. Syslog показывает это:
...
Nov 17 17:42:01 zion-VirtualBox CRON[4845]: (zion) CMD (make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1)
Nov 17 17:42:01 zion-VirtualBox CRON[4844]: (CRON) info (No MTA installed, discarding output)
Nov 17 17:43:02 zion-VirtualBox CRON[4850]: (zion) CMD (make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1)
Nov 17 17:43:02 zion-VirtualBox CRON[4849]: (CRON) info (No MTA installed, discarding output)
Любые идеи о том, почему он не работает и как отлаживать?
EDIT 01:
Я изменил хрон на:
* * * * * make_ls_files.sh 2>>$HOME/crontab.log
Теперь я получаю где-то файл журнала создается в /home/zion/crontab.log
, содержащий:
/usr/local/bin/make_ls_files.sh: line 6: date: command not found
/usr/local/bin/make_ls_files.sh: line 6: ls: command not found
Почему ls
и date
не распознаются?
EDIT 02
Спасибо всем, я узнал кое-что здесь. Как Руслан pointend из меня было 2 вопроса:
- недостаточное разрешение для размещения файла журнала
- недостаточен путь определений
Все работает сейчас, окончательный cronjob ниже:
# create text files every minute:
PATH=/bin:/usr:/usr/bin:/usr/local/bin
# * * * * * make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1
* * * * * make_ls_files.sh 2 >> $HOME/crontab.log
вы должны использовать полный путь к 'make_ls_files.sh' в crontab' * * * * * /usr/local/bin/make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2> & 1' – bansi
@ bansi, это не обязательно, если '/ usr/local/bin /' находится в '$ PATH' –
@RuslanOsmanov, путь по умолчанию Cron зависит от реализации и не может быть надежным через дистрибутивы. Так что всегда лучше быть на более безопасной стороне. – bansi