Рейтинг:1

Как я могу узнать, почему мой crontab не работает?

флаг in

Я новичок ... Я сразу скажу это. У меня есть простой сервер Ubuntu 20.04 LTS, используемый только как сервер Minecraft.

Кронтаб доставляет мне некоторые проблемы

*/10 * * * * screen -S minecraft -p 0 -X stuff "сохранить-все^M"
@reboot /home/minecraft/startserver.sh
@daily find /home/minecraft/backup/* -mtime +6 -type f -delete
@daily zip -9 -r --exclude=*backup* --exclude=*web* --exclude=*отчеты о сбоях* --exclude=*lost+found* /home/minecraft/backup/$(date + "%Y.%m.%d %I.%M %P").zip /home/minecraft

Первая строчка работает, а @daily и @reboot вообще не работают. ВСЕ команды работают из терминала без ошибок.

Пожалуйста, помогите мне понять это, у меня нет опыта работы с Linux, и я пытаюсь понять это. Я знаю, что некоторые люди могут подумать, что с этим лучше справиться с помощью systemd, но я слишком новичок, чтобы понять это, и я не хочу устанавливать скрипт, который я не могу восстановить.

Почему crontab не выполняет эти строки? Я не думаю, что это разрешения. Пожалуйста, помогите мне отладить это

Спасибо за ваше время

РЕДАКТИРОВАТЬ: ОК, после копания проблема со сценарием startserver была внутри самого сценария, а не в crontab. Я узнал, что мне нужно иметь флаг для команды screen в crontab.

Команда zip работает, но я не могу понять, какой escape-код использовать для добавления пробелов в дату. резервная копия/$(дата +"\%Y.\%m.\%d \%I.\%M \%P").zip Использование косой черты \ или используя " " не работай. Если кто-нибудь знает, как избежать пробела при создании zip-файлов, сообщите мне.

В комментариях мне сказали использовать правильный формат для редактирования поста. Я не знаю, что это значит, это мой первый пост.

флаг vn
Привет Крони! Добро пожаловать в AskUbuntu! Это два символа ^M (^ и M) или возврат каретки в формате Windows? Если там есть мошеннический возврат каретки, то последующие 3 строки могут быть интерпретированы неправильно.
Cronie avatar
флаг in
@tu-ReinstateMonica-dorduh Эта строка отправляет команду на сервер Minecraft на экране. ^M в кавычках, разве это не должно изолировать его? --Изменить: я закомментировал эту строку, и это не решило проблему.
флаг au
Вам нужно экранировать символы `%` (`...date +"\%Y.\%m.\%d \%I.\%M \%P"...`) (см. [здесь]( https://unix.stackexchange.com/questions/119450)), и, вероятно, следует также указать подстановочные знаки в команде `zip` (например, `--exclude="*backup*"`) (но не в `find ` команда). Кроме того, я бы регистрировал выходные данные и ошибки команд, добавляя что-то вроде `>>/tmp/minecraftserver.log 2>&1` к каждой строке (но с разными именами файлов для каждой), а затем проверяя эти файлы журналов на посмотрите, дают ли они указание на то, что происходит.
флаг au
Дополнительная информация по устранению неполадок [здесь] (https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working) и [здесь] (https://serverfault.com/questions/449651/why- мой-crontab-не-работает-и-как-можно-устранить-его-неполадки).
флаг au
@Cronie добавлять пробелы в имя файла сложно, потому что вы оба должны заключать в кавычки строку формата для `date`, чтобы указать, что есть пробел * в * аргументе (а не между аргументами), * и * вы также должны поместите двойные кавычки вокруг `$()`, чтобы указать оболочке не разбивать вывод, который она получает. Вероятно, лучше всего заключить весь путь к файлу в двойные кавычки: `... "/home/minecraft/backup/$(date +"\%Y.\%m.\%d \%I.\%M \%P" .zip" ...`. Кстати, я второй рекомендацией waltinator поместить это в скрипт (и удалить эти escape-последовательности) и просто запустить скрипт с помощью записи cron.
Рейтинг:0
флаг it

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

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

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

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

Cronie avatar
флаг in
Извините, я должен был упомянуть, что это не GUI Ubuntu, сервер только терминал. Я ввел предложенную вами команду ``echo``, и она выдала много страниц информации, которую я не в состоянии расшифровать. Я не совсем понял, что вы хотели добавить ```#!bin/bash``` в crontab или в скрипты, которые я вызываю. Сценарии, которые я запускаю, уже имеют ```#!bin/bash``` в своем заголовке.
waltinator avatar
флаг it
Запустите команды `echo` в вашей терминальной среде, сохранив результаты в файле. Повторно запустите их через `crontab`, сохранив результаты в другом файле. Сравните файлы `diff файл1 файл2 | меньше`. Некоторые переменные среды отсутствуют в файле, сгенерированном `crontab`, или имеют другие значения, например. `ПУТЬ`. Поскольку поле команды crontab интерпретируется с синтаксисом `/bin/sh`, люди часто ошибочно пытаются использовать более продвинутый `/bin/bash.
waltinator avatar
флаг it
Поскольку поле `command` `crontab` интерпретируется с синтаксисом `/bin/sh`, люди часто ошибочно пытаются использовать более продвинутый синтаксис `/bin/bash`. crontab` `command` (`/usr/local/bin/script7`) и сохранение хитрости, кода отладки, генерации команд, тестов («Это второй вторник?») для `script7`, который начинается с `#!/bin/bash`.
waltinator avatar
флаг it
Пожалуйста, [отредактируйте] свой пост, чтобы добавить новую информацию в правильном формате. Информацию, добавленную через комментарии, трудно форматировать для вас, трудно читать нам и игнорировать будущие читатели. Пожалуйста, нажмите [редактировать] и добавьте эту важную информацию к вашему вопросу, чтобы все факты, которые нам нужны, были в вопросе. Пожалуйста, не используйте «Добавить комментарий», так как это наша ссылка на вас. Все факты о вашей системе должны быть указаны в вопросе с [править]

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

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