이전 Redhat Linux 운영 체제에서는 Cron에서 작업을 실행하기가 어렵지만 내 사용자 계정/명령줄에서는 잘 작동합니다.
내 사용자와 다른 쉘을 사용하는 Cron과 관련된 것 같습니다.
내 사용자 계정을 사용하여 백그라운드에서 스크립트를 실행하고 주어진 시간에 하나 이상의 작업을 예약하는 방법이 있습니까?
크로나 입장:
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