command - это башизм . Поскольку вы указываете строку shebang, вы не должны указывать оболочку в вашем crontab; это просто сбивает с толку. Вы должны сделать одно или другое - я очень предпочитаю строчку shebang, потому что вы явно указываете следующий синтаксис, а не притворяетесь «универсальным» сценарием оболочки.
Да, и убедитесь, что вы делаете свой скрипт исполняемым и помещаете только /path/to/your/script.sh
в поле команды crontab, не sh /path/to/your/script.sh
, sh /to/your/script.sh
или даже . /path/to/your/script.sh
. Последние три игнорируют строку shebang и вместо этого запускают сценарий в контексте оболочки cron, какой бы она ни была настроена.
См. инструкции по перенаправлению для получения дополнительной информации о сохранении вывода скрипта в файл.
В современных версиях Linux, если вы запустите этот код в bash, это не приведет к сбою вашей системы. Он использует системный вызов fork. '& 'из вашего fucntion означает, что он выполняется в фоновом режиме, и когда он пытается это сделать, он использует системный вызов fork (). Он будет разветвляться так много раз, что вилка будет недоступна, поэтому вы не сможете запускать новые приложения , потому что это тоже необходимо для разветвления, но приложения, которые у вас уже запущены, будут в порядке.