как установить переменную ПУТИ crontab

Я наконец скопировал использование канала tar.

# cd /mnt/sda1/ && tar cf - * | nc 192.168.1.1 2222 # on laptop
# cd /mnt/sda5/ && nc -l 2222 | tar x # on desktop

Копирование было путем быстрее и, казалось, работало.

Я не смог загрузиться в мысли Windows 7. Я только видел черный экран при начальной загрузке в нем и замораживания раздела восстановления при Запуске Windows.

Я думаю, что Вам нужны две лицензии для использования Windows 7 на двух компьютерах, таким образом, я не думаю, что он работал бы.

17
03.08.2014, 14:55
3 ответа

Хотя они похожи, пользовательский crontab (отредактированный с помощью crontab -e) отличается от системного crontab (отредактированный путем редактирования / etc / crontab) и сохраняет отдельный путь от него.

Системный crontab имеет 7 полей, в которых перед командой вставляется имя пользователя. С другой стороны, пользовательский crontab имеет только 6 полей, идущих непосредственно в команду сразу после полей времени.

Аналогично, ПУТЬ в системном crontab обычно включает каталоги / sbin, тогда как ПУТЬ в пользовательском crontab не включает. Если вы хотите установить PATH для пользовательского crontab, вам необходимо определить переменную PATH в пользовательском crontab.


Простым обходным путем для добавления вашего обычного PATH в команды оболочки в cron является создание источника cronjob в вашем профиле, запустив bash в оболочке входа в систему. например, вместо

* * * * * some command

вы можете вместо этого запустить

* * * * * bash -lc some command

. Таким образом, если ваш профиль устанавливает PATH или другие переменные среды на что-то особенное, это также включается в вашу команду.

17
27.01.2020, 19:47

Если вам нужна система по умолчанию широкие пути и другие переменные ENV (которые определены в /etc/profile.d), просто поместите следующее:

* * * * * . /etc/profile; your cmd
8
27.01.2020, 19:47

Можно установить ПУТЬ (или другие параметры )в строке cronjob или в отдельной строке. Но вы не можете использовать расширение оболочки, например PATH=$PATH:/usr/local/bin. Символ тильды (~)в качестве ярлыка для домашнего каталога работает в MacOS, но, похоже, не работает в Linux (, по крайней мере, с debian/buster ).

Из книг:

An active line in a crontab is either an environment setting or a cron command. An environment setting is of the form: name = value where the white spaces around the equal-sign (=) are optional, and any subsequent non-leading white spaces in value is a part of the value assigned to name. The value string may be placed in quotes (single or double, but matching) to preserve leading or trailing white spaces.

См. man 5 crontabдля получения дополнительной информации.

Так что это должно работать:

PATH=/bin:/usr/bin:/my/path/bin
5 3 * * * command_that_requires_my_path
21
27.01.2020, 19:47

Теги

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