최신 Linux(커널 3.x, 4.x, 5.x)에서 응용 프로그램을 시작하는 방법과 장점 및 단점에 대해 질문하고 싶습니다.
나는 3가지 방법을 알고 있습니다:
- 예약 된 일들
- /etc/rc.local
- 시스템 스크립트
하지만 나는 모른다:
- 언제 어떤 방법을 사용해야 합니까?
- 이 메서드는 어떤 순서로 실행되나요?
- 다른 방법이 있나요?
이 특별한 경우에는 wvdial을 실행하고 전화 접속 연결을 유지하는 스크립트를 시작해야 합니다.
그냥 넣어서 마무리가 되었는지, USB 모뎀 드라이버가 로드되었는지 /etc/rc.local
확인할 수 있나요? 아니면 종속성을 사용 하고 추가 해야 할까요 ?udev
/dev/ttySomeModem
systemd
udev
나는 모뎀이 연결될 때 실행 udev
하고 모뎀이 대용량 저장 장치에서 모뎀 모드로 전환될 때 모뎀 직렬 포트에 대한 심볼릭 링크를 생성하곤 했습니다.usb_modeswich
/dev/ttyUSB*
답변1
먼저 특정 질문에 답한 다음 일반화하여 wvdial 문제에 대한 해결책을 제안하겠습니다.
이 메서드는 어떤 순서로 실행되나요?
Cron은 매분마다 실행되며 특정 분에 예정된 명령을 실행합니다. Cron은 시작과 관련이 없지만 머신이 꺼져 있는 동안에는 아무것도 실행되지 않습니다.
/etc/rc.local은 "마지막"으로 실행됩니다. System V init(sysemd 이전)의 경우진짜시스템은 부팅하기 전에 마지막으로 실행되는 것으로 간주됩니다. systemd를 사용하면 그냥 실행하세요.네트워크가 가동되면 다른 서비스와 동시에.
systemd 단위는 가능한 한 빨리 종속성과 병렬로 실행됩니다( Wants
및 의 지시문 참조 Requires
).시스템 유닛(5)) 및 지침이 적용 Before
됩니다 After
. 체계구별하다~ 사이주문하다단위와 그종속성.
언제 어떤 방법을 사용해야 합니까?
정기적으로 특정 작업을 수행해야 하는 경우 Cron을 사용하세요. systemd를 사용하면 다음을 사용할 수도 있습니다.시간제 노동자이를 위해.
rc.local은 정답인 경우가 거의 없으므로 피해야 합니다. 적절한 서비스의 구성을 편집하거나, 해당 서비스에 대한 스크립트를 변경하거나, 새 스크립트를 작성하는 것을 고려해 보십시오. 바라보다이 블로그 게시물이에 대한 자세한 설명.
systemd 단위는 대부분의 경우 사용해야 하는 단위입니다(그러나 아래 참조). System V에서는 대신 서비스를 사용하십시오.
다른 방법이 있나요?
주요 작업을 나열했지만 일부 다른 작업을 위한 특수 기능도 있습니다. 예를 들어 udev는 특정 이벤트를 기반으로 스크립트를 실행할 수 있습니다. KDE 또는 Gnome과 같은 데스크탑 환경은 자동 시작 기능을 제공합니다. 경험상 가장 합리적일 때 작업을 수행하십시오. 예를 들어 오디오 플레이어를 시작하려면 KDE 자동 시작을 사용하고 OpenSSH 서버를 시작하려면 systemd를 사용하십시오.
이 특별한 경우에는 wvdial을 실행하고 전화 접속 연결을 유지하는 스크립트를 시작해야 합니다.
흥미로운 예는 다음과 같습니다. 초기화해야 합니다.장치, 그런 다음 실행서비스. 내가 생각할 수 있는 가장 간단한 방법은 다음과 같습니다.
- 장치에 "systemd" 태그를 지정하세요.systemd는 이를 위한 장치 장치를 생성합니다.;
- 장비 단위에 따라 달라지는 일회성 단위를 작성합니다.
usb_modeswitch
기존 udev 핸들러가 수행하는 것과 동일한 심볼릭 링크를 실행하고 생성해야 합니다 . systemctl edit wvdial.service
wvdial이 생성한 일회성 단위에 종속되도록 하려면Requires=
및 지시어를 추가하세요 .After=
모드 설정이 완료될 때까지 wvdial이 지연됩니다.
약간 더 오래된 접근 방식은 udev 핸들러를 유지하고 기호 링크가 나타날 때까지 기다리느라 wvdial 서비스를 수정하는 것입니다.
장치의 플러그를 뽑았다가 다시 연결할 때 NM이 재다이얼을 알 수 있도록 NetworkManager에 wvdial을 가르쳐야 할 수도 있습니다. 그러나 실제로 모뎀을 사용한 적이 없기 때문에 잘 모르겠습니다.