반복 bash 스크립트를 작성하는 방법

반복 bash 스크립트를 작성하는 방법

나는 새로운 정보를 스크랩하고 데이터베이스를 업데이트하기 위해 일련의 명령줄 지침이 필요한 프로그램을 만들었습니다.

앉을 때마다 터미널에 이 모든 내용을 입력할 필요가 없도록 이 프로세스를 자동화하는 방법이 있습니까? 아마도 처음 3단계는 매시간 실행되고 4단계는 완료하는 데 시간이 오래 걸릴 수 있으므로 오전 2시에 실행되도록 할 수도 있습니다.

1 단계:터미널에서:

...Documents/dota2/dotaapi2/ python match_scraper.py 

2 단계:터미널에서

 psql dota2apidb
 update games set online=1 where online is null;

3단계:터미널에서:

...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota

4단계:터미널에서: (오전 2시에 한 번만 실행)

...Documents/dota2/dotaapi2/ python gosu_merge.py

...Documents/dota2/dotaapi2/ python unticketed.py

답변1

한 가지 해결책은 게임 디렉터리를 잠그거나 잠금 해제하도록 cronjob을 설정하는 것입니다. 그렇게 하려면 아래 단계를 따르십시오.

  1. cron-daemon이 설치되어 있는지 확인하십시오.

    sudo apt-get install cron
    
  2. 루트에서 실행되도록 cronjob 설정

다음 명령을 실행하여 cronjob 편집을 시작합니다.

sudo crontab -e

편집기에 다음 줄을 추가합니다.

00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py

(분명히 말하자면, 실행 중인 크론의 양을 줄일 수 있도록 준비된 bash 스크립트에 그 중 일부를 넣어 적절한 명령과 경로를 사용해야 합니다)

답변2

1,2,3단계를 script1.sh에 넣고 4단계를 script2.sh에 넣습니다.

그런 다음 설정크론적절한 사용자가 일정에 따라 스크립트를 실행하려면 다음을 수행하세요.

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command

    01 * * * * /usr/bin/directory/script1.sh
    30 2 * * * /usr/bin/directory/script2.sh

script1.sh는 매일 매시간 01분에 실행되고 script2.sh는 매일 0200시 30분에 실행됩니다.

관련 정보