задание cron справки по сценариям оболочки не выполняется

#shell #scripting #cron

#оболочка #сценарии #cron

Вопрос:

 #!/bin/bash

#!/bin/sh

# Need help

__help() { echo "$0 [ stop|start ]" 1>amp;2; exit 1; }

# Not enough args to run properly

[ $# -ne 1 ] amp;amp; __help

# See what we're called with

case "$1" in

start) # Start sniffer as root, under a different argv[0] and make it drop rights

s=$(/usr/local/sbin/tcpdump -n -nn -f -q -i lo | awk 'END {print NR}')
echo "$s" > eppps_$(/bin/date  '%Y%m%d%H%M')

;;

stop) # End run, first "friendly", then strict:

/usr/bin/pkill -15 -f /usr/local/sbin/tcpdump >/dev/null 2>amp;1|| { sleep 3s; /usr/bin/pkill -9 -f /usr/local/sbin/tc$

;;

*) # Superfluous but show we only accept these args

__help

;;
esac
exit 0
 

Этот код отлично работает при ручном тестировании. Но когда я соединяю его с cron, он просто ничего не делает. Выходной файл не создан.

Мои записи cron для скрипта выглядят следующим образом

http://postimage.org/image/1pztgd6xw/

Комментарии:

1. Посмотрите на ошибку, как описано здесь linux-junky . blogspot.com/2010/10/debugging-cronjobs.html

Ответ №1:

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

Комментарии:

1. Спасибо, Макс, ты был прав насчет проблемы с абсолютным путем. Теперь код работает нормально

2. Безопаснее также указать абсолютный путь для команды awk, а не полагаться на путь, установленный в вашей crontab