반응형
오래 전에 라즈베리파이에서 사용했던 방식을 Xavier에도 동일하게 설정해서 사용했었는 것으로 기억하는데,
Xavier를 완전 초기화 한 후에, 설정을 잘못 했는지 기존의 방식으로는 처리가 안되어서, 아래 방법으로 처리하였다.
1. /lib/systemd/system/ 폴더에 파일을 하나 만들었다. 이름은 safe_shutdown.service로 지정하였고, 내용은 다음과 같이 등록하였다. root 권한이 아닌, 일반 계정으로 실행시키려면, Service섹션에 "User=ID" 를 넣어주면 된다.
[Unit]
Description=Safe Shutdown
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/igi/bot/safe_shutdown/safe_shutdown.py
WorkingDirectory=/home/igi/bot/safe_shutdown
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
부팅할 때, network이 올라온 후에 실행되도록 하고, 실행되는 것은 execstart에 명령어를 정의하였다.
위의 각 섹션에 대해서는 chatgpt에게 설명을 부탁했더니, 아래와 같이 설명한다.
[Unit] 섹션
- Description: 서비스에 대한 간단한 설명입니다. 여기서는 "Safe Shutdown"이라는 이름의 서비스를 설명하고 있습니다.
- After=network.target: 이 서비스는 network.target 이후에 실행될 수 있도록 설정되어 있습니다. network.target은 네트워크 인터페이스가 준비된 후에 동작합니다.
[Service] 섹션
- Type=simple: 서비스의 유형을 지정합니다. simple은 단순히 ExecStart 명령을 실행하는 기본 유형입니다.
- ExecStart: 서비스가 시작될 때 실행되는 명령어입니다. 여기서는 /usr/bin/python3 /home/igi/bot/safe_shutdown/safe_shutdown.py를 실행하여 Python 3 인터프리터를 사용하여 safe_shutdown.py 스크립트를 실행합니다.
- WorkingDirectory: 서비스가 실행될 작업 디렉토리를 지정합니다. 여기서는 /home/igi/bot/safe_shutdown으로 설정되어 있습니다.
- Restart=always: 서비스가 비정상적으로 종료되었을 경우 자동으로 재시작하도록 설정합니다.
- RestartSec=3: 재시작 간격을 지정합니다. 이 경우 3초 후에 재시작을 시도합니다.
[Install] 섹션
- WantedBy=multi-user.target: 이 서비스가 multi-user.target에서 원하는 대상으로 지정됩니다. multi-user.target은 시스템이 멀티 유저 모드로 진입했을 때 실행되는 기본 대상입니다. 즉, 시스템이 사용자 로그인을 허용하는 모드에서 이 서비스가 활성화됩니다.
요약
이 설정 파일은 Safe Shutdown이라는 이름의 서비스를 정의하며, 네트워크가 준비된 후에 Python 스크립트를 실행하여 시스템을 안전하게 종료하도록 설계되었습니다. 서비스는 비정상적으로 종료될 경우 자동으로 재시작되며, 시스템의 멀티 유저 모드로 진입할 때 자동으로 활성화됩니다.
2. systemd 데몬을 리로딩
$ sudo systemctl daemon-reload
3. 서비스 활성화
$ sudo systemctl enable safe_shutdown.service
Created symlink /etc/systemd/system/multi-user.target.wants/safe_shutdown.service → /lib/systemd/system/safe_shutdown.service.
/etc/systemd/system/multi-user.target.wants/ 폴더에 파일링크를 자동으로 걸어준다.
4, 서비스 시작
sudo systemctl start safe_shutdown.service
해당 프로그램이 데몬으로 실행된다.
반응형
'Jetson & 머신러닝 > 삭제' 카테고리의 다른 글
[삭제] pyCUDA, LLVM, numba, keras install on jetson Xavier (0) | 2024.06.30 |
---|---|
jetson xavier에서 pytorch/vision CUDA/GPU사용 방법 (0) | 2024.06.26 |
[삭제] jetson xavier에서 pytorch/vision CUDA/GPU사용 방법(2) (0) | 2024.06.20 |
[삭제] Jetson Xavier 에서 GPU로 추론, 학습하기 설정(1) (1) | 2024.06.17 |
[삭제] windows10(x64)의 mingw/msys 환경에서의 OpenCV4 빌드하기(1) (0) | 2020.01.07 |