소개

소개

소개

systemctl저는 최근 Fedora 17로 업그레이드했으며 최신 데몬 관리자와 쉘 초기화 스크립트 에 익숙해지고 있습니다 .

일부 데몬에 필요한 기능은 다음과 같습니다.콘솔과 상호 작용프로세스 자체에서 시작되지 않은 비정상 종료로 인해 데이터베이스가 손상될 수 있기 때문입니다. 따라서 systemctl stop service-name.service예를 들어 다음을 수행하면 되돌릴 수 없는 데이터 손실이 발생할 수 있습니다.

이 콘솔은 stdin 또는 유사한 방법을 통해 사용자 입력을 읽습니다. 따라서 제가 기존 OS에서 수행한 작업은 해당 데몬을 세션의 포그라운드에 배치하는 것이었습니다 screen.정지된과의 스크린 세션입니다 ^A ^z. 이제 컴퓨터가 재부팅되면 이 작업을 자동으로 수행하도록 설정했지만 systemctl피하려고 하는 잠재적인 데이터 손상 문제는 여전히 해결되지 않는다는 점도 주목할 가치가 있습니다.


내 질문

systemctl생성된 프로세스 콘솔과 직접 상호 작용하는 데 사용할 수 있는 방법이 있습니까 ? systemctl콘솔에 액세스하기 위해 프로세스를 연결할 수 있습니까 ?


감사해요

항상 좋은 답변을 주시는 분들이 있어서 문의드립니다!

답변1

tty로 리디렉션할 수 있을 것 같습니다.

StandardInput=

실행된 프로세스의 파일 설명자 0(STDIN)이 연결되는 위치를 제어합니다. null, tty, tty-force, tty-fail 또는 소켓 중 하나를 사용합니다. null이 선택되면 표준 입력은 /dev/null에 연결됩니다. 즉, 프로세스의 모든 읽기 시도는 즉시 EOF로 이어집니다. tty가 선택되면 표준 입력은 TTY(TTYPath=로 구성된 대로, 아래 참조)에 연결되고 실행된 프로세스는 터미널의 제어 프로세스가 됩니다. 터미널이 이미 다른 프로세스에 의해 제어되고 있는 경우 실행된 프로세스는 현재 제어 프로세스가 터미널을 해제할 때까지 기다립니다.tty-force는 tty와 유사하지만 실행된 프로세스가 강제로 즉시 터미널 제어 프로세스가 되어 이전 제어 프로세스가 터미널에서 제거될 가능성이 있습니다.tty-fail은 tty와 유사하지만 터미널에 이미 제어 프로세스 시작이 있는 경우 실행된 프로세스가 실패합니다. 소켓 옵션은 소켓 활성화 서비스에서만 유효하며, 소켓 구성 파일(자세한 내용은 systemd.socket(5) 참조)이 단일 소켓만 지정하는 경우에만 유효합니다. 이 옵션이 설정되면 표준 입력은 서비스가 활성화된 소켓에 연결되며, 이는 주로 기존 inetd(8) 데몬과 함께 사용하도록 설계된 데몬과의 호환성에 유용합니다. 이 설정의 기본값은 null입니다.

인용 링크

아, 그리고 그것이 작동하지 않는다면, 우리는 Unix 소켓을 사용하여 매우 복잡한 작업을 수행할 것입니다.사랑.

말도 안 되는 소리는 집어치우고 위의 내용이 허용되지 않으면 다음과 같이 시도해 보세요.

/proc pid 디렉토리에 쓰기를 시도해 볼 수 있습니다. 데몬의 pid가 2000이라고 가정하고, /proc/2000/fd/0에 쓰십시오.

원천

해당 행을 ExecStop=에 추가하면 수동으로 상호 작용할 필요가 없습니다.

관련 정보