linux: як запустити команду в заданому каталозі


16

Я просто хочу просто запустити команду (власне її скрипт оболонки) з заданого каталогу як завдання cron. Як я можу запустити його, щоб він був встановлений у заданій директорії без використання cd.

Відповіді:


16

Ваше запитання мало сенсу. Використовуйте cd. Якщо ви попросите відповідь не використовувати, cdтому що ви її спробували, і вона не спрацювала, ймовірно, ви неправильно ввели її в crontab.

Найпростішим способом було б написати невеликий скрипт оболонки, який буде виконувати CD та виконувати ваше основне завдання, а потім - cron script.


1
Чи може crontab дозволити мені поставити кілька команд всередині однієї роботи? Якщо ні, то мені доведеться кодувати CD [path]. І шлях може змінитися, тим самим спричиняючи дійсно дратує проблеми з розгортанням, а також децентралізуючи конфігурацію, чого я уникаю будь-якою ціною.
Зомбі

1
@ Zombies: так, ви можете помістити кілька команд всередині одного завдання (наприклад, розділити їх крапками з комою або &&), але ви також можете написати окремий скрипт, який містить усі команди, і просто покласти шлях до сценарію в cron, як це запропонував Daenyth. Ваш сценарій може зробити щось на кшталт читання каталогу з файлу конфігурації, якщо вам подобається - справа в тому, однак ви хочете, щоб ім'я каталогів у вашому сценарії, це не привід не використовувати cd.
David Z

Я бачу. Я захочу використовувати CD на crontab безпосередньо, оскільки якщо я напишу його у файл, мені доведеться редагувати його у кожному файлі, що створює делікатні / зручні для розбиття конфігурації.
Зомбі

3
І якщо ви помістите компакт-диск у файл crontab, вам доведеться редагувати його у кожному файлі crontab. Я не розумію проблеми. Можливо, ви могли б пояснити, що ви намагаєтесь зробити більш повно.
garyjohn

А інша причина запуску сценарію оболонки з файлу crontab полягає у тому, щоб переконатися, що середовище встановлено правильно. Навколишнє середовище, яке надається роботі з крон, зазвичай ледве навіть мінімальне, тому зазвичай потрібно скинути його на щось більш корисне.
Джонатан Леффлер

60

Просто вкажіть шлях до сценарію. Не потрібно cd:

0 12 * * * /path/to/script args

Якщо ваш скрипт шукає файли в ., то ви будете повинні використовувати cd:

0 12 * * * cd /some/dir && /path/to/script args


4
&&, як у відповіді на посилання @WillSheppard на відповідь, було б краще, ніж ;тому, &&що наступна команда виконує лише те, що попередня команда була успішною.
Макс Хайбер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.