|
已解决,谢谢关注。原因为我的系统中缺少“run-parts”命令。
我在 http://examples.oreilly.com/upt3/ 处找到一个“run-part”的简易替代品:
run-parts.sh- #!/bin/bash
- # Source:
- # [url]http://examples.oreilly.com/upt3/[/url]
- # Author:
- # O'RIILY
- # Gain:
- # 2008-05-07 16:05
- # run-parts - concept taken from Debian
- # keep going when something fails
- set +e
- if [ $# -lt 1 ]; then
- echo "Usage: run-parts <dir>"
- exit 1
- fi
- if [ ! -d $1 ]; then
- echo "Not a directory: $1"
- exit 1
- fi
- # Ignore *~ and *, scripts
- for i in $1/*[^~,] ; do
- [ -d $i ] && continue
- # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts
- [ "${i%.rpmsave}" != "${i}" ] && continue
- [ "${i%.rpmorig}" != "${i}" ] && continue
- [ "${i%.rpmnew}" != "${i}" ] && continue
- [ "${i%.swp}" != "${i}" ] && continue
- [ "${i%,v}" != "${i}" ] && continue
- if [ -x $i ]; then
- $i 2>&1 | awk -v "progname=$i" \
- 'progname {
- print progname ":\n"
- progname="";
- }
- { print; }'
- fi
- done
- exit 0
复制代码 ========================================
#!/bin/bash# Source:
# http://examples.oreilly.com/upt3/
# Author:
# O'RIILY
# Gain:
# 2008-05-07 16:05
# run-parts - concept taken from Debian
# keep going when something fails
set +e
if [ $# -lt 1 ]; then
echo "Usage: run-parts <dir>"
exit 1
fi
if [ ! -d $1 ]; then
echo "Not a directory: $1"
exit 1
fi
# Ignore *~ and *, scripts
for i in $1/*[^~,] ; do
[ -d $i ] && continue
# Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts
[ "${i%.rpmsave}" != "${i}" ] && continue
[ "${i%.rpmorig}" != "${i}" ] && continue
[ "${i%.rpmnew}" != "${i}" ] && continue
[ "${i%.swp}" != "${i}" ] && continue
[ "${i%,v}" != "${i}" ] && continue
if [ -x $i ]; then
$i 2>&1 | awk -v "progname=$i" \
'progname {
print progname ":\n"
progname="";
}
{ print; }'
fidone
exit 0
########################################
以下为原始问题。
########################################
试图每分钟都自动定时执行某任务失败。
打算自动执行的脚本为“/home/dba/123/db_maintenance/exec/export_new.sh”,内容为:
- #!/bin/bash
- # Exporting database by cron.
- # Author:
- # Typhoon.Free.Wolf
- # Version:
- # 2008-05-06-01
- echo -e "$(date)\n\t-" >> "/tmp/cron_executed"
复制代码
手工执行“/home/dba/123/db_maintenance/exec/export_new.sh”会在"/tmp/cron_executed"里产生一条记录。但自动执行没有这个效果。
我的“/etc/crontab”如下:
- # Generated by:
- # T.F.W
- # Creating:
- # 2008-05-04
- SHELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- HOME=/
- OUTPUT=/tmp/cron_executed
- # Test.
- # Do command at any minute.
- #* * * * * root echo -e "$(date)\n\t-" >> $OUTPUT
- # Do command for every 1 minute.
- #*/1 * * * * root echo -e "$(date)\n\t1" >> $OUTPUT
- # Do command for every 2 minutes.
- #*/2 * * * * root echo -e "$(date)\n\t2" >> $OUTPUT
- # Do command for every 3 minutes.
- #*/3 * * * * root echo -e "$(date)\n\t3" >> $OUTPUT
- # Export database at XX:00, XX:30 in each day.
- */1 * * * * dba /home/dba/123/pg_db_export/export.sh #这个是每分钟都执行了。
- # Maintence database once for each minute.
- */1 * * * * dba run-parts /home/dba/123/db_maintenance/exec/ #这个目录内有
- 脚本“export_new.sh”,但貌似执行没效果。
复制代码
自动执行时,“/var/log/cron”中每分钟都会添加“May 6 12:13:01 xz_server crond[6980]: (dba) CMD (run-parts /home/dba/123/db_maintenance/exec/)”记录,但“/tmp/cron_executed”的内容无变化。
原因不明,求解。
[ 本帖最后由 自由狼-台风 于 2008-5-7 16:27 编辑 ] |
|