Bash скрипт не создает файл из crontab

Я уже пробовал половину аскубунту, но все еще не получилось. Я получил следующий скрипт оболочки:

#!/bin/bash
echo "test" > "/mnt/ssd/test.txt"
echo "test"

И следующую строку crontab -e:

* * * * * /mnt/ssd/test.sh > /mnt/ssd/cron.log

Когда я добавлю строку в файл cron.log вручную, она будет пустой каждую новую минуту, что говорит мне, что cron увольняют.

Я также попробовал следующий cronjob:

* * * * * env > /mnt/ssd/env.output

Это дало мне следующие значения:

LANGUAGE=nl_NL.UTF-8
HOME=/home/pi
LOGNAME=pi
PATH=/usr/bin:/bin
LANG=nl_NL.UTF-8
SHELL=/bin/sh
LC_ALL=nl_NL.UTF-8
PWD=/home/pi

Это снова говорит мне, что cron работает, и SHELL верна да?

Я тоже пробовал этот cron:

* * * * * PATH=/bin:/sbin:/usr/bin:/usr/sbin /mnt/ssd/test.sh > /mnt/ssd/cron.log

Ни он ничего не записывает в файл cron.log, ни создает файл test.txt.

Я немного растерялся. Если мой PATH неверен, я пытаюсь исправить это правильным образом или что-то еще неправильно?

РЕДАКТИРОВАТЬ: благодаря @steeldrive было обнаружено, что диск, на котором был расположен этот скрипт, был смонтирован с типом noexec. Значение bash-файла обычно не может быть выполнено. Помещение «bash» перед командой заставило ее работать. Команда теперь выглядит следующим образом:

* * * * * bash /mnt/ssd/test.sh > /mnt/ssd/cron.log 2>&1

добавлены 2> & 1, поэтому ошибки также будут выводиться в файл журнала.

2
задан 26 October 2019 в 00:35

1 ответ

Хорошо так, на основе входа, данного @steeldriver, нам удалось получить решение.

Сценарий удара расположен на монтировании, которое было смонтировано типом noexec. Значение файлов удара не может быть выполнено простое. Это было найдено с помощью команды:

mount | grep ssd

Решение однако просто: добавьте удар перед crontab-e команда:

* * * * * bash /mnt/ssd/test.sh > /mnt/ssd/cron.log 2>&1

2> &1 часть добавляется в этой строке также, таким образом, журналы ошибок также помещаются в файле cron.log.

0
ответ дан 2 December 2019 в 05:54

Другие вопросы по тегам:

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