我不是程序員,也不是安全專家。我與保點工作,我有以下代碼,由我制定了使用與檢查點日誌管理:Bash腳本 - 守護進程
#!/bin/bash -
# Necessario carregar as variaveis do CheckPoint:
. /etc/profile.d/CP.sh
# Description:
# Log management
# Crontab:
#0 */1 * * * nohup /etc/scripts/log start 0<&- 1>> /var/log/LOG 2>&1 &
# Vars:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/etc/scripts
FILE=/var/log/LOG
SLEEP=600
RUN_TIME=01
LOG_DIR=$FWDIR/log
GZIP_RET=1
SCP_RET=1
SCP_USR=openssh
SCP_DEST_DIR=LOGS_RJ
SCP_IP=192.168.1.41
TIME=$(clock | awk {'print $4'} | cut -d ':' -f 1)
CHECK=$(ps aux | grep 'log start' | grep -v grep | wc -l)
DATE=$(date +%y%m%d)
# Functions:
usage() {
echo "Usage: $0 [start|stop]" >&2
exit 1
}
do_launch() {
if [ "$CHECK" -eq 2 ] ; then
set -x
#exec >> /var/log/LOG 2>&1
else
exit
fi
}
do_compression() {
SEARCH=`find "$LOG_DIR" -name '20*' -daystart -follow -mtime +$GZIP_RET | grep -v gz`
for i in $SEARCH ; do
gzip -f -9 $i ;
done
}
do_scp() {
SEARCH=`find "$LOG_DIR" -name '20*' -daystart -follow -mtime +$SCP_RET`
for i in $SEARCH ; do
scp $i [email protected]$SCP_IP:$SCP_DEST_DIR && rm $i || break 1;
done
}
# Work
if [ "$#" -ne 1 ]
then
usage
else
case "[email protected]" in
start)
while true ; do
do_launch
while true ; do
if [ "$TIME" -eq "$RUN_TIME" ] ; then
do_scp
else
do_compression
fi
sleep $SLEEP
done
done
;;
stop)
pkill -x log
;;
*)
usage
esac
fi
exit
腳本手動運行時運行正常,但是當我把在crontab中nohup /etc/scripts/log start 0<&- 1>> /var/log/LOG 2>&1 &
甚至來自終端和退出運行和登錄,腳本無法循環/運行,但它仍然從ps
運行。
有人可以幫助我嗎?
此外,bash版本是CheckPoint的2.05b版本,但如果手冊中的內容一切正常,我認爲版本不是原因。
通過手動模式,您的意思是您正在終端運行'/ etc/scripts/log start 0 <&- 1>>/var/log/LOG 2>&1'並且正在運行,那麼它也應該與'nohup'一起工作。你如何得出它*不工作*? –
我得出這樣的結論,因爲我看不到日誌增加,日誌壓縮等完成工作,所以沒有運行。感謝你的回答 !!! –
請參閱下面的@ jonathan's asnwer。一旦你解決了這些問題,腳本就可以工作。雖然我懷疑你的說法,它是從終端工作.. –