본문 바로가기

리눅스

스크립트로 크론 작업을 추가하는 방법

728x90

스크립트로 크론 작업을 추가하는 방법

Crontab 작업 등록

  • 환경 변수 CRON_JOB에 크론 작업을 정의
CRON_JOB="* * * * * php /apps/artisan schedule:run >> /dev/null 2>&1"
  • www-data 사용자의 크론 테이블에 추가
echo "$CRON_JOB" | sudo crontab -u www-data -
  • www-data 사용자의 크론 테이블 조회
crontab -u www-data -l

스크립트로 크론 작업을 추가

vim scripts.sh
#!/bin/bash

CRON_JOB="* * * * * php /apps/artisan schedule:run >> /dev/null 2>&1"
CRON_FILE="/etc/cron.d/my_cron_job"

# 작업이 이미 있는지 확인
if grep -qF "$CRON_JOB" "$CRON_FILE"; then
    echo "Cron job already exists."
else
    echo "$CRON_JOB" | sudo tee -a "$CRON_FILE" >/dev/null
    echo "Cron job added successfully."
fi

크론 파일(/etc/cron.d/my_cron_job)에 작업이 이미 있는지 확인하고 없다면 추가합니다.

728x90

sh -c 명령어

"sh -c" 명령어는 쉘에서 명령어 문자열을 실행하는 데 사용됩니다.

sh -c "명령어"
sh -c 'echo "Hello, World!"'

sudo -u 명령어

"sudo -u" 명령어는 특정 사용자 권한으로 명령을 실행하는 데 사용됩니다.

  • 기본 사용법
sudo -u [사용자] [실행할 명령]
  • [사용자]에는 실행하려는 명령을 실행할 사용자의 이름이나 UID(사용자 식별자)를 지정합니다.
  • [실행할 명령]에는 지정된 사용자의 권한으로 실행할 명령어나 스크립트를 입력합니다.

nginx 사용자로 /usr/sbin/nginx 명령을 실행

sudo -u nginx /usr/sbin/nginx

현재 사용자의 권한으로 sudo를 사용하여 nginx 사용자의 권한으로 /usr/sbin/nginx를 실행합니다.

 

sh -c 명령어는 쉘을 실행하고 해당 쉘에 대한 명령을 실행하는 역할을 합니다. sudo -u nginx /path/to/your/script.sh는 nginx 사용자의 권한으로 지정된 스크립트를 실행합니다.

sh -c "sudo -u nginx /path/to/your/script.sh"
  1. sh -c : 쉘을 실행하는 명령어입니다.
  2. "sudo -u nginx /path/to/your/script.sh" : 쉘에 전달되는 명령어로 sudo -u nginx /path/to/your/script.sh를 실행합니다.
    • sudo -u nginx: 지정된 사용자 nginx의 권한으로 실행합니다.
    • /path/to/your/script.sh: 실행할 스크립트의 경로입니다.

이 명령어는 쉘을 실행하여 sudo -u nginx로 지정된 사용자 권한으로 스크립트를 실행하는 것이 목적입니다.

 

728x90