У мене є скрипт bash
#!/bin/sh
DTFILE=/etc/daytime.addr
DTPORT=13
DAYTIME_ERROR=/tmp/dtm.err
function daytime_error(){
if [[ -z $1 ]]
then
exit 1
fi
if [[ -e $DAYTIME_ERROR ]]
then
echo "Error already reported"
else
logger "$1"
touch $DAYTIME_ERROR
fi
exit 1
}
if [[ -s $DTFILE ]]
then
ADDR=$(head -n1 $DTFILE)
DAYTIME=$(telnet $ADDR $DTPORT | time_conv.awk)
if [[ -z $DAYTIME ]]
then
daytime_error "Daytime client: no connection to $ADDR"
else
date -s "$DAYTIME"
hwclock -w
rm $DAYTIME_ERROR
fi
else
daytime_error "Daytime client: no daytime server address in file $DTFILE"
fi
і він працює, коли викликається з командного рядка, але не працює, коли cron його викликає. Зокрема, лінія з командою telnet дає нульові байти виводу. Telnet має маску 755, тому кожен користувач повинен мати можливість його використовувати. Будь-які ідеї?
#!/bin/sh
це насправді не сценарій bash, навіть якщо / bin / sh символічно пов'язаний з bash. Bash веде себе по-іншому, якщо викликається як "sh".
/path/to/bash /path/to/script
на крон, а не на/path/to/script
для мене гумор? Також додайте повний шлях до будь-яких не вбудованих виконуваних файлів, таких як telnet?