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은 매분 실행되지 않습니다. 그렇다면 Arch Linux에서 cron 작업을 실행하려면 어떻게 해야 합니까? 아래의 위키 가이드를 살펴봤지만 여전히 헤매고 있습니다.

편집하다

몇 가지 팁을 찾았습니다.여기에 대한 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" 작업을 실행하는 방법

...arch Linux 예정된 이벤트입니다. 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 ScheduledReboot.service 파일에는 다음이 포함됩니다.

[Unit]
Description=Scheduled Reboot

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

2.2 ScheduledReboot.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

이자형

cron.txt를 사용하여 파일 크론 작업 만들기

cat cron.txt 0 1 * * * systemctl이 iradio를 중지합니다. shutdown -P 0 30 23 * * * systemctl이 시계를 중지합니다. 34 23 * * * systemctl이 시계를 시작합니다.

그런 다음 새 파일을 crontab

크론탭 cron.txt

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

관련 정보