나는 새로운 정보를 스크랩하고 데이터베이스를 업데이트하기 위해 일련의 명령줄 지침이 필요한 프로그램을 만들었습니다.
앉을 때마다 터미널에 이 모든 내용을 입력할 필요가 없도록 이 프로세스를 자동화하는 방법이 있습니까? 아마도 처음 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을 설정하는 것입니다. 그렇게 하려면 아래 단계를 따르십시오.
cron-daemon이 설치되어 있는지 확인하십시오.
sudo apt-get install cron
루트에서 실행되도록 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분에 실행됩니다.