시스템이 시작된 후 Linux 커널에서 직접 프로그램을 실행하십시오.

시스템이 시작된 후 Linux 커널에서 직접 프로그램을 실행하십시오.

cron이나 이와 유사한 것을 사용하지 않고 Linux 커널에서 직접 애플리케이션을 실행하려고 합니다. 를 사용해 보았 ./init/init.c으나 너무 일찍 실행되었습니다.

$ dmesg 

...
[    0.605657] TEST!!!
...

내 생각은 사용자가 성공적으로 로그인한 후 응용 프로그램을 시작하는 것이지만 사용하기에 적합한 기능을 찾을 수 없습니다.

답변1

사용자가 로그인한 후 꼭 필요한 경우 쉘 구성 파일에 넣을 수 있습니다. 아마도 ~/.bash_profile.

마치 터미널에서 실행하는 것처럼 응용 프로그램의 파일 이름을 호출하는 줄(아마도 끝 부분)을 추가하려고 합니다. 예를 들어 /home/username/bin/mypersonalscript.sh&절대 경로를 사용할 수 있습니다.

또한 끝에 앰퍼샌드를 추가해야 합니다. 이렇게 하면 프로세스가 백그라운드로 포크되며 프로세스가 없으면 로그인할 때 셸에 들어가지 못할 수도 있습니다.

작동하지 않으면 스크립트가 실행 가능한지 확인하세요.

답변2

커널의 임무는 프로세스를 실행하는 것입니다.내부에, 프로세스 ID 1을 얻습니다. init의 임무는 시스템 서비스를 제공하고 사용자가 로그인할 수 있도록 다른 프로세스를 실행하는 것입니다.

다른 경우에는 Linux 커널도 프로세스를 실행합니다. 예를 들어 커널이 특정 버스에서 새 하드웨어를 감지하면modprobe드라이버를 모듈로 로드하기 위해 실행. 또 다른 예는 코어 덤프를 파이프로 연결하도록 프로그램을 구성할 수 있다는 것입니다. 내 생각엔 이 모든 경우에 사용되는 것 같아call_usermodehelper_xxx기능.

드물지만 커널 이벤트(하드웨어 이벤트 또는 프로그램 종료)에 의해 트리거되는 경우도 있습니다. 이는 낮은 수준의 시스템 기능을 위해 예약된 특별한 경우입니다. 프로세스를 실행하는 일반적인 방법은 프로세스에서 분기되고, 프로세스에서 분기되고, 다시 init에서 분기되는 것입니다.

커널에는 심지어알다"로그인에 성공했습니다"에 관해서. 로깅은 커널보다 훨씬 높은 수준의 개념입니다. 사용자가 로그인했을 때 루트로 프로세스를 실행하려면 해당 프로세스를폴리아크릴아미드구성,pam_exec기준 치수. 로그인한 사용자로 프로세스를 실행하려면 해당 프로세스를 사용자의 셸 시작 파일(일반적으로 ~/.profile.

관련 정보