[systemd] μλ² reboot μ μλΉμ€ μλ μ€ν
κ°μ
μ격 μλ²μ λ¬Έμ κ° λ°μν΄μ reboot μ§ννλλ°, μ격 μλ²μμ μ΄μ μ€μΈ μλΉμ€λ€μ΄ λ€ λ΄λ €κ°μ μλμΌλ‘ μ€νμμΌμΌ νλ€.
μ΄ λ²κ±°λ‘μμ μμ κ³ μ, μ격 μλ² reboot λμμ λ μλμ μΌλ‘ μλΉμ€κ° μ€νλλλ‘ μΆκ°νλ €κ³ νλ€.
λ°©λ²
1. systemdμ μΆκ°
2. crontabμ μΆκ°
λ°©λ² 1οΈβ£ systemd
1. μλΉμ€ νμΌ μμ±
sudo vim /etc/systemd/system/my_service.service
2. μλΉμ€ νμΌ μμ±
[Unit]
Description=Activate service automatically when rebooting this server.
After=network.target
[Service]
ExecStart=/bin/bash -c "source /home/my_name/anaconda3/etc/profile.d/conda.sh && conda activate /home/my_name/.conda/envs/my_env && python /home/my_name/my_service/main.py"
Restart=always
User=my_name
WorkingDirectory=/home/my_name/my_service
StandardOutput=append:/home/my_name/my_service/logfile.log
StandardError=append:/home/my_name/my_service/errorfile.log
[Install]
WantedBy=multi-user.target
- ExecStart
- source /home/my_name/anaconda3/etc/profile.d/conda.sh
- condaλ₯Ό μ΄κΈ°ν
- conda.sh μ€ν¬λ¦½νΈλ Conda νκ²½μ νμ±ννλ λ° νμ
- conda activate /home/my_name/.conda/envs/my_env
- νκ²½μ νμ±ν
- python /home/my_name/my_service/main.py
- νκ²½ νμ±ν ν μ€νν μ€ν¬λ¦½νΈλ₯Ό μ§μ
- source /home/my_name/anaconda3/etc/profile.d/conda.sh
3. μλΉμ€ νμ±ν λ° μ€ν
sudo systemctl daemon-reload
sudo systemctl enable my_service.service
sudo systemctl start my_service.service
4. μλΉμ€ μν νμΈ
$ sudo systemctl status my_service.service
β my_service.service - Activate service automatically when rebooting this server.
Loaded: loaded (/etc/systemd/system/my_service.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-01-06 14:33:08 KST; 1min 18s ago
Main PID: 3239090 (python)
Tasks: 4 (limit: 154179)
Memory: 118.7M
CGroup: /system.slice/my_service.service
ββ3239090 python /home/my_name/my_service/app/main.py
ββ3239101 /home/my_name/.conda/envs/my_service/bin/python -c from multiprocessing.resource_tracker import main;main(5)
ββ3239102 /home/my_name/.conda/envs/my_service/bin/python -c from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=6, pipe_handle=8) --multi>
1μ 06 14:33:08 workstation systemd[1]: Started Activate service automatically when rebooting this server..
λ°©λ² 2οΈβ£ crontab
1. crontab νΈμ§
crontab -e
2. λΆν μ μ€ν λͺ λ Ή μΆκ°
@reboot /bin/bash -c "source /home/dde/anaconda3/etc/profile.d/conda.sh && conda activate /home/cvteam/.conda/envs/GradelWeb && python /home/my_name/my_service/main.py > /home/my_name/my_service/logfile.log 2>&1 &"
3. ν μ€νΈ
- μλ² μ¬λΆν ν μ€ν μ¬λΆ νμΈ
ps aux | grep main.py
π μ 리
crontabλ³΄λ€ systemdλ₯Ό μΆμ²νλ μ΄μ λ κΈ°λ₯μ±, μ μ°μ±, κ΄λ¦¬μ± λλ¬Έ!
νΉν μλ² νκ²½μμλ μμ μ μ΄κ³ μ§κ΄μ μΈ μλΉμ€ κ΄λ¦¬κ° μ€μνκΈ° λλ¬Έμ systemdκ° λ μ ν©νλ€ !!
- μλΉμ€ κ΄λ¦¬
systemdλ μλΉμ€λ₯Ό μμ, μ€μ§, μ¬μμ, μν νμΈ λ±μ λͺ λ Ήμ ν΅ν΄ κ°νΈνκ² μ μ΄ν μ μλ€:
sudo systemctl start my_service
sudo systemctl stop my_service
sudo systemctl restart my_service
sudo systemctl status my_service
rontabμ μ΄λ¬ν μ μ΄ κΈ°λ₯μ΄ μμΌλ©° λ¬Έμ κ° λ°μνμ λ λλ²κΉ κ³Ό κ΄λ¦¬κ° μ΄λ ΅λ€.
- λ‘κ·Έ κ΄λ¦¬
systemdλ μλΉμ€μ νμ€ μΆλ ₯κ³Ό μ€λ₯ λ‘κ·Έλ₯Ό μλμΌλ‘ μ μ₯νκ³ , journalctl λͺ λ Ήμ΄λ‘ μ½κ² νμΈν μ μλ€:
journalctl -u my_service
crontabμμλ μΆλ ₯μ΄λ μ€λ₯λ₯Ό νμΌλ‘ redirectionν΄μΌ νλ©°, λ³λλ‘ μ€μ νμ§ μμΌλ©΄ λλ²κΉ μ΄ λ³΅μ‘νλ€.
- μλ μ¬μμ λ° λ³΅κ΅¬
systemdλ μλΉμ€κ° λΉμ μ μ’ λ£λμμ λ μλμΌλ‘ μ¬μμν μ μλ€:
[Service]
Restart=always
RestartSec=5
μ΄λ μ₯μκ° μ€νλλ νλ‘μΈμ€μμ μμ μ±μ 보μ₯νλ€.
crontabμλ μ΄λ¬ν 볡ꡬ λ©μ»€λμ¦μ΄ μμ΄, μ€ν¬λ¦½νΈκ° μ€ν¨νλ©΄ μλ κ°μ μ΄ νμνλ€.
- μμ‘΄μ± κ΄λ¦¬
systemdλ μλΉμ€κ° μ€νλ λ νμν μμ‘΄μ±μ μ μν μ μλ€:
[Unit]
After=network.target
μλ₯Ό λ€μ΄, λ€νΈμν¬κ° μ€λΉλ νμλ§ μλΉμ€κ° μ€νλλλ‘ μ€μ κ°λ₯νλ€.
crontabμμλ μ΄μ κ°μ μμ‘΄μ± κ΄λ¦¬κ° μ΄λ ΅κ³ , μ€ν¬λ¦½νΈ λ΄λΆμμ λͺ¨λ μ€λΉλ₯Ό μλμΌλ‘ μ²λ¦¬ν΄μΌ νλ€.