对于较旧的 Redhat Linux 操作系统,很难从 Cron 运行作业,但它在我的用户帐户/命令行中运行良好。
似乎与使用与我的用户不同的 shell 的 Cron 有关。
有没有办法使用我的用户帐户在后台运行脚本,在给定时间安排 1 个或多个作业?
克朗条目:
00 08 * * * DBPATH='/usr2/customer/actr/data/409';export DBPATH;/usr2/customer/actr/systems/adsnew/scripts/rb3pamrx8.sh 'lp -d macaplp01 -s -oL' 'Y' '409' 'today+1' '1' 'DEV'
答案1
将代码放入脚本中并安排脚本。如果它比单个命令长,或者使用任何“花哨”的东西,只需将其放入脚本中:
#!/bin/sh
DBPATH='/usr2/customer/actr/data/409'
export DBPATH
/usr2/customer/actr/systems/adsnew/scripts/rb3pamrx8.sh \
'lp -d macaplp01 -s -oL' \
'Y' '409' 'today+1' \
'1' 'DEV'
这样可读性更强,而且由于它不会隐藏在 crontab 的某个地方,因此您可以更改它而不必修改 crontab 条目。它还可以根据需要添加控制结构和逻辑,而不必尝试在一行中完成所有操作。
简而言之:它将动作(脚本)与时间表分开。
crontab 条目可能是
0 8 * * * /usr2/customer/actr/cronscripts/theprintjob.sh
或者其他的东西。
答案2
这是我的用户的 crontab 的示例:
SHELL=/usr/local/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/noc
LOGNAME=jessebutryn
USER=jessebutryn
HOME=/Users/jessebutryn
#
0 12 * * * /Users/jessebutryn/Documents/scripts/shell/tools/mantasync.sh
0,15,30,45 * * * * /Users/jessebutryn/Documents/scripts/shell/tools/ntoolssync.sh
如果您不想为整个 cron 选项卡设置变量,但有一个作业需要在您的用户环境中运行,您通常可以直接获取 bash 配置文件,类似于:
0 2,6,10,14,18,22 * * * . /root/.bash_profile ; /opt/local/bin/fraudchk