systemd를 통해 실행되는 서비스에 인텔 핀 도구를 적용하는 가장 좋은 방법은 무엇입니까?

systemd를 통해 실행되는 서비스에 인텔 핀 도구를 적용하는 가장 좋은 방법은 무엇입니까?

나는 사용하고 싶다인텔 핀 도구open-ssh 서버를 감지합니다. 명령을 따르는 것 외에는 이 작업을 수행할 수 있는 방법이 없습니다.

$PIN_HOME/pin -t somepintool.so -- /usr/sbin/sshd

그래서 주로 pin 도구를 이용하여 systemctl을 이용해서 서비스를 감지하는 방법을 알고 싶은데, 방법이 안보이기 때문에 systemctl을 이용하지 않고 sshd 서비스를 중지하는 방법만 알면 처리할 수 있습니다.

내 생각은 sshd 프로세스를 종료하는 것입니다. 이것이 좋은 생각입니까? 다른 제안이 있나요?

미리 감사드립니다.

답변1

동시에 실행하면 안 되는 두 가지 서비스가 있는 경우 다음을 고려하세요.Conflicts=[Unit]섹션 에 항목 추가테스트 서비스:

Conflicts=

공백으로 구분된 단위 이름 목록입니다. 부정적인 요구 사항 종속성을 구성합니다. 한 장치 Conflicts=에 다른 장치에 대한 설정이 있는 경우 전자를 시작하면 후자도 중지되고 그 반대의 경우도 마찬가지입니다. 이 설정은 순서 종속성과 독립적 After=이며 직교한다는 점에 유의하세요 Before=.

장치 B와 충돌하는 장치 A가 장치 B와 동시에 시작되도록 예약된 경우 트랜잭션은 실패하거나(둘 다 트랜잭션의 일부인 경우) 수정되도록 수정됩니다(필요한 사항 중 하나 또는 둘 다인 경우). 작업은 거래의 필수 부분이 아닙니다). 후자의 경우 불필요한 작업이 제거되거나 둘 다 필요하지 않은 경우 충돌하는 장치가 시작되고 충돌하는 장치가 중지됩니다.

따라서 이것은 작동할 수 있습니다(테스트되지 않음).

핀-sshd.service

[Unit]
Description=Pin debugging of sshd (copied from sshd.service)
After=syslog.target network.target auditd.service
Conflicts=sshd.service

[Service]
ExecStart=/path/to/pin -t somepintool.so -- /usr/sbin/sshd -D -e

[Install]
WantedBy=multi-user.target

이렇게 하면 systemd동시에 두 개의 서비스를 실행하지 않고 올바른 중지 및 시작을 표시할 수 있습니다. 내가 본 대부분의 서비스는 이를 사용하므로 Conflicts=shutdown.target일반적으로 서비스를 종료하기 전에 서비스가 완료되었는지 확인하는 데 사용되는 것처럼 보이지만 다른 목적으로 사용하는 것을 막을 수는 없습니다!

답변2

sshdusing 없이 죽이는 것이 왜 도움이 되는지 잘 모르겠지만 , 시작 시 systemd에게 run 을 사용하라고 systemctl지시하는 것을 막을 수는 없습니다.pinsshd

sudo systemctl edit ssh.service

또는

sudo systemctl edit sshd.service

(어떤 파일을 가지고 있는지에 따라 - Debian 파생물은 ssh.service, Fedora 및 RHEL 파생물은 `sshd.service를 사용합니다.) 그리고 다음을 입력합니다.

[Service]
ExecStart=/path/to/pin -t somepintool.so -- /usr/sbin/sshd -D $SSHD_OPTS

그런 다음 다시 시작하십시오 sshd...

/etc/systemd/system/ssh(d?).service.d/override.conf재정의는 이름이 지정된 코드 조각 에 저장됩니다 . 이를 삭제하면 기본 sshd정의가 복원됩니다.

관련 정보