Arch Linux - 크론 작업을 실행하는 방법은 무엇입니까?

Arch Linux - 크론 작업을 실행하는 방법은 무엇입니까?

저는 Arch Linux를 사용하고 있으며 매분마다 실행되는 크론 작업을 만들려고 합니다. 그래서 나는 다음을 사용합니다:

$ crontab -e

그리고 다음 위치에 스크립트를 추가하세요.

* * * * * Rscript /srv/shiny-system/cron/CPU.R
~
~
"/tmp/crontab.8VZ7vq" 1 line, 47 characters 

(나는 "/tmp/crontab.8VZ7vq"가 무엇인지 전혀 모릅니다!)

하지만 작동하지 않습니다. CPU.R이 매분 실행되지 않습니다. cron 작업을 실행하려면 Arch Linux에서 무엇을 해야 합니까? 아래 위키 가이드를 살펴봤지만 여전히 길을 잃었습니다.

편집하다

힌트를 좀 찾았어요여기에 관하여 crond.

[xxx@localhost ~]$ systemctl status crond
● crond.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
[xxx@localhost ~]$ sudo systemctl start crond
[sudo] password for xxx: 
Failed to start crond.service: Unit crond.service failed to load: No such file or directory.

이것은 무엇을 의미 하는가?어디이 crond.service를 넣어야 할까요?무엇스크립트를 넣어야 하나요?

답변1

없다크론드 서비스아치 리눅스에서. Arch Wiki에서는 다음과 같이 명확하게 설명합니다.

많은 cron 구현이 있지만 기본 시스템이 대신 systemd/Timers를 사용하므로 기본적으로 그 중 아무것도 설치되지 않습니다.

따라서 cron을 사용하려면 다음을 수행해야 합니다.선택하다많은 구현 중 어떤 것을 설치하고 해당 특정 서비스를 시작할지.

systemctl enable nonexistent.service무작위로 입력 한 다음 왜 실행되지 않는지 궁금해하는 것이 아닙니다 .

cronie를 원하면 cronie를 설치하고 다음으로 시작하십시오.

pacman -Syu cronie
systemctl enable --now cronie.service

Arch 문서는 일반적으로 매우 명확합니다. 링크된 페이지를 더 주의 깊게 읽으면 필요한 것이 무엇인지 알아야 합니다.

답변2

내가 이해한 것이 맞다면, 당신 말은...

'cron' 작업을 실행하는 방법

...아치 리눅스에서 예정된 이벤트입니다. cron 대체품으로 systemd/Timers를 사용하는 것은 매우 간단합니다.

cron은 틀림없이 가장 잘 알려진 작업 스케줄러이지만 systemd 타이머도 대안이 될 수 있습니다.

이익

타이머 사용의 주요 이점은 각 작업마다 고유한 시스템 서비스가 있다는 점입니다. 이러한 이점 중 일부는 다음과 같습니다.

  • 타이머와 관계없이 작업을 쉽게 시작할 수 있습니다. 이렇게 하면 디버깅이 단순화됩니다.
  • 각 작업은 특정 환경에서 실행되도록 구성할 수 있습니다(systemd.exec(5) 참조).
  • 작업을 cgroup에 연결할 수 있습니다.
  • 작업은 다른 시스템 장치에 따라 설정될 수 있습니다.
  • 쉬운 디버깅을 위해 작업은 systemd 저널에 기록됩니다.

...말한 바와 같이여기

cron을 사용해야 하는 경우에도 여전히 가능하며 설명되어 있습니다.여기.


이 답변을 유용한 답변으로 만들기 위해매일 자동 예약 재부팅01:30에.

1. 두 개의 파일(서비스 파일 하나, 타이머 파일 하나)을 만듭니다.두 이름(.timer 및 .service)이 일치해야 합니다.. 철:

sudo vim /usr/lib/systemd/system/scheduledReboot.service

sudo vim /usr/lib/systemd/system/scheduledReboot.timer

(/usr/lib/systemd/system/... 폴더는 참고로 모든 .service 파일을 포함하는 기본 폴더입니다.)

2.1 파일chedReboot.service에는 다음이 포함됩니다.

[Unit]
Description=Scheduled Reboot

[Service]
Type=simple
ExecStart=/usr/bin/systemctl --force reboot

2.2 cheduledReboot.timer 파일에는 다음이 포함됩니다.

[Unit]
Description=Reboot Scheduling.

[Timer]
OnCalendar=*-*-* 01:30:00

[Install]
WantedBy=multi-user.target
  1. 그리고 마지막으로 작업을 시작합니다.

sudo systemctl start scheduledReboot.timer

sudo systemctl enable scheduledReboot.timer

  1. 작업이 성공적으로 생성되었는지 확인합니다.

sudo systemctl list-timers --all

및/또는

sudo systemctl status scheduledReboot.timer

..다음과 같은 내용이 표시됩니다.

Trigger: Sun 2020-05-31 01:30:00 EDT; 10h left


저는 개인적으로 systemd / .service 접근 방식을 정말 좋아합니다. nfs 드라이브 자동 마운트 등과 같은 systemctl을 사용하여 모든 시스템 작업을 사용하고 정말 효과적이고 효율적으로 작동하기 때문입니다.

답변3

이자형

crone 작업 등으로 파일을 생성하십시오. cron.txt

고양이 cron.txt 0 1 * * * systemctl stop iradio; shutdown -P 0 30 23 * * * systemctl 중지 시계 34 23 * * * systemctl 시작 시계

그런 다음 새 파일을 crontab

크론탭 cron.txt

지금은 효과가 있는 것 같습니다.

관련 정보