μ¬λΆν μ Crontabμ μν΄ νλ‘μΈμ€λ₯Ό μλμΌλ‘ μ€ννκΈ°
π€ͺ μ¬λΆν μ Crontabμ μν΄μ νλ‘μΈμ€κ° μλμΌλ‘ μ€νλμ§ μμ μ΄μ
ν¬λ‘ ν(Crontab)μ 리λ μ€μμ μΌμ λ μμ μ΄λ μ£ΌκΈ°μ μΌλ‘ λͺ λ Ήμ΄ λλ μ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μλ μ€μΌμ€λ¬ λλ νμ΄λ¨Έμ λλ€. μ΄μ μ μμ±ν 리λ μ€μμ νλ‘μΈμ€ μ€ν μ μ§νκΈ°μμλ ν¬λ‘ νμΌλ‘ νλ‘μΈμ€λ₯Ό μ€ννλ λ°©λ²μ λν΄μ λ€λ£¨μ΄λ³Έ μ μ΄ μμ΅λλ€. μλ² μμ€ν μ΄ μκΈ°μ§ μμ μν©μ μν΄μ μ¬λΆν λκ±°λ μ’ λ£λμ΄ μλμΌλ‘ μ€νλ μλ μμΌλ―λ‘ Systemd λλ CrontabμΌλ‘ νλ‘μΈμ€λ₯Ό μλμΌλ‘ μ€νν μ μλ€κ³ 곡μ νμμ΅λλ€.
κ·Έλ°λ° μΌλ§μ μ νΉμ κ³ κ° νκ²½μ μλ²λ€μ κ³ κ°μ΄ μ§μ§κ³Ό κ°μ μκΈ°μΉ μμ μ₯μ λ‘ μΈν΄μ μλ²κ° μ¬λΆν λλ μν©μμ νλ‘μΈμ€κ° μλμΌλ‘ μ€νλ μ μμμ ν μ€νΈνλ μ€ μλ²κ° μ¬λΆν λ λ μλμΌλ‘ μ€νλμμ΄μΌν νλ‘μΈμ€λ€μ΄ μμλμ§ μλλ€λ νΌλλ°±μ΄ μ λ¬λμμ΅λλ€. μ€μ λ‘ μμ€ν μ΄ μ¬λΆν λ λ νλ‘μΈμ€κ° μλμΌλ‘ μ€νλμ§ μμμμ νμΈνμκ³ ν¬λ‘ νκ³Ό μ μ€ν¬λ¦½νΈμ λν μ΄ν΄κ° λΆμ‘±νλ€λ μ μ νμΈνμ΅λλ€.
μ λ μλ²μ λν λΆλΆμ μ λ¬Έμ μΌλ‘ κ΄λ¦¬νλ μλ² μμ§λμ΄λ μλλ―λ‘ νμν λΆλΆμ κ²μν ν μ 리λ λ°λ₯Ό ν λλ‘ μμ μ ν μ λ°μ μμ΅λλ€. Crontabμ μν΄μ νλ‘μΈμ€κ° μλμΌλ‘ μ€νλκΈ° μν΄μ κ²ν νμ§ μμ λΆλΆμ΄ 무μμΈμ§λ₯Ό 곡μ ν΄λ³΄κ² μ΅λλ€.
Crontab
ν¬λ‘ νμ λν λ©λ΄μΌ νμ΄μ§λ₯Ό μ΄ν΄λ³΄λ©΄ EXTENSIONSμΌλ‘ μμ€ν μ΄ μ¬λΆν λμμλ μ€νν μ μλλ‘ μκ°μ μ§μ ν μ μλ λ³μΉμ΄ μλ€λ κ²μ νμΈν μ μμ΅λλ€. Crontab Reboot: How to Execute a Job Automatically at Bootμ κ°μ κΈμμλ κ°λ¨νκ² @rebootμ μ¬μ©νλ©΄ μμ€ν μ΄ λΆν λμμλ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μλ€κ³ μ 리λμ΄μμ΅λλ€. κ·Έλμ λ¨μν @rebootλ₯Ό μ§μ νκΈ°λ§ νλ©΄ μμ€ν μ΄ μ¬λΆν λμμλ μ μμ μΌλ‘ μ μ€ν¬λ¦½νΈκ° μ€νλ κ²μ΄λΌκ³ μμνμμ΅λλ€.
Interactive and Non-Interactive Shell
μ κ° κ²ν νμ§ μμ λΆλΆμ μ μ€ν¬λ¦½νΈκ° μ€νλλ λ°©μμ΄ λ€μνλ€λ κ²μ μμ΅λλ€. μΌλ°μ μΌλ‘ SSH μ μμΌλ‘ μ€νλλ μμ λ‘κ·ΈμΈ μμ λλ€. λ‘κ·ΈμΈ μ λ° Bashλ‘ μ€νλμμλλ λ€μκ³Ό κ°μ νμΌλ€μ΄ μλμΌλ‘ λ‘λλλ€λ νΉμ§μ΄ μμ΅λλ€.
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.profile
μΌλ°μ μΌλ‘ μ μ€ν¬λ¦½νΈλ₯Ό μμ±νκ³ μ€νν΄λ³΄μμλλ λ‘κ·ΈμΈ μμ ν΅ν΄ μ€ννκΈ° λλ¬Έμ μ€ν μ€ν¬λ¦½νΈμμ μ°Έμ‘°νλ λ§μ νκ²½λ³μκ° μ¬λ°λ₯΄κ² μ§μ λμ΄μλ€λ κ²μ΄ 보μ₯λ©λλ€. κ·Έλ¬λ Crontabμ μν΄μ μλμΌλ‘ μ€νλλ μ€ν¬λ¦½νΈλ λ‘κ·ΈμΈ μμμ μνλλ κ²μ΄ μλλ―λ‘ νκ²½λ³μκ° μ λλ‘ μ§μ λλ€λ κ²μ 보μ₯ν μ μλ λ¬Έμ λ₯Ό κ°κ³Όν κ²μ λλ€.
μ¬μ©μ κΈ°λ³Έ μ
μ μ€ν¬λ¦½νΈμ μ λ± (#!)μ Bashλ‘ μ§μ νλλΌλ ν¬λ‘ νμ μν΄μ μ€νλλ μ μ νμ μ¬μ©μμ κΈ°λ³Έ μλ‘ κ³ μ λ©λλ€. SSH μ μ ν λ‘κ·ΈμΈ μ μνλ‘ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ©΄ νμ¬ μμ΄ BashμΈ κ²μ νμΈν μ μμ΅λλ€. κ·Έλ¬λ, 리λΆνΈ λͺ λ Ήμ μννκ³ λμ ν¬λ‘ νμ μν΄μ μ€νλ μ€ν¬λ¦½νΈμ λν λ‘κ·Έλ₯Ό νμΈνλ©΄ Bashκ° μλ κΈ°λ³Έ μμ΄λΌκ³ κΈ°λ‘λμ΄μμ΅λλ€.
./a.sh
SHELL: /bin/bash
# reboot with #!/bin/bash
tail a.log
SHELL: /bin/sh
# reboot with #!/bin/bash --login
tail a.log
SHELL: /bin/sh
# crontab -e && SHELL=/bin/bash
SHELL: /bin/bash
μ κ²°κ³Όλ₯Ό ν λλ‘ μ μ€ν¬λ¦½νΈμμ μ λ± κ³Ό ν¨κ» λ‘κ·ΈμΈ μ μ΅μ μ νμ±ννλ κ²κ³Ό μκ΄μμ΄ μ¬μ©μμ κΈ°λ³Έ μμ λ³κ²½νκ±°λ ν¬λ‘ ν μ€μ μ μμ μ§μ νλλ‘ νμ¬μΌνλ€λ κ²μ νμΈν μ μμ΅λλ€.
νκ²½λ³μ νμΌ
μ μ€ν¬λ¦½νΈμμ λ‘κ·ΈμΈ μ μ΅μ (βlogin)μ μ§μ νλ κ²μ μ ν΄μ§ νκ²½λ³μ νμΌμ λ‘λνκΈ° μν λ°©λ²μ λλ€. λ€λ§, λ‘κ·ΈμΈ μμ΄ μ μ©λμκΈ°μ λ€μκ³Ό κ°μ΄ ~/.bashrcλ λ‘λλμ§ μλ κ²μ νμΈν μ μμ΅λλ€.
#!/bin/bash --login
tail a.log
Loaded /etc/profile
Loaded .profile
SHELL: /bin/bash
ν¬λ‘ νμ μν΄μ μ μ€ν¬λ¦½νΈκ° μ€νλ λμλ Non-Interactive Shell λ°©μμΌλ‘ λμνλ€λ μ μ μΈμ§ν΄μΌν©λλ€. μ΄λ λ‘κ·ΈμΈ μ μ΅μ μ μ§μ ν΄λ .bashrc νμΌμ΄ λ‘λλμ§ μμμμ νμΈν μ μμ΅λλ€.
κ²°κ³Όμ μΌλ‘, μ¬λΆν μμλ ν¬λ‘ νμ μν΄μ μ μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ νλ‘μΈμ€κ° μλμΌλ‘ μ€νλκΈ° μν΄μλ λ€μμ λ°©μ μ€μμ νκ²½ λ³μκ° μ¬λ°λ₯΄κ² λ‘λλ μ μλλ‘ λ³λμ μμ μ μνν΄μΌν©λλ€.
- .profileμ νκ²½ λ³μλ₯Ό μ§μ ν κ²½μ° βlogin μ΅μ κ³ λ €
- .bashrc λλ .bash_profileμ νκ²½ λ³μλ₯Ό μ§μ ν κ²½μ° νμΌμ μ§μ λͺ μνμ¬ λ‘λ
- νλ‘μΈμ€ μ€ν μ νμν νκ²½λ³μλ₯Ό μλμΌλ‘ μ§μ νλ μ€ν¬λ¦½νΈ λ‘λ
ν¬λ‘ νμ μν΄μ μ μ€ν¬λ¦½νΈκ° μ μμ μΌλ‘ μ€νλμ§ μλλ€λ©΄ μλ§μ μκ³Ό νκ²½λ³μκ° μ¬λ°λ₯΄κ² λ‘λλλ λ°©μμ μ·¨νμλμ§ κ²ν νμκΈ° λ°λλλ€.