需要一个 Linux 脚本来安排作业而不使用 Cron 或 at

需要一个 Linux 脚本来安排作业而不使用 Cron 或 at

对于较旧的 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

相关内容