Как сказал Ипор Сирсер, lckdo
, вероятно, правильный выбор.
В сценарии bash
может быть так:
$ BASHPID - это PID запущенного сценария. Вы можете сохранить его в файл и проверить его существование (или, еще лучше, проверить, активен ли тот, который содержит PID).
#!/usr/bin/env bash
PIDFILE="/foo/bar/script.pid"
# script running?
[[ -s $PIDFILE ]] && exit
# no, create pidfile
echo $BASHPID > $PIDFILE
# .. do some stuff
# delete pidfile
rm $PIDFILE
У вас есть разные настройки пути при запуске cron, поэтому всегда используйте абсолютные пути в сценариях или службах cron.
Я нашел решение:
end_YYYYMMDDHH = $ (date --date = "$ {start_YYYY} - $ {start_MM} - $ {start_DD} $ {start_HH}: $ {start_II}: $ {start_SS} UTC + $ {flen} часов "-u" +% Y% m% d% H ")
он работает правильно, но по какой-то причине, если вы переместите это part: -u "+% Y% m% d% H"
к началу команды, которая выдает эту ошибку!
очень странно то, что одна и та же команда работает на другой машине!