Debian wheezy로 업그레이드한 후(커널을 업그레이드하지 않았습니다. 여전히 3.8.2입니다) 이전처럼 jackd를 더 이상 시작할 수 없습니다. 알겠어요 you are not allowed to use realtime scheduling
.
sudo
조사 결과 이는 루트에서 martin으로 sudo를 실행한 스크립트의 명령과 관련이 있는 것으로 나타났습니다 . Firewire 하이브리드 콘솔이 열리면 udev 규칙을 사용하여 jackd를 시작하기 때문에 sudo가 필요합니다. 명령줄에서 sudo를 입력하면 문제를 재현할 수 있습니다.
간단히 말해서 내가 관찰한 것은 이것이다.
- 마틴으로 jackd 시작 -> 일
- jackd를 루트로 시작 -> 실행
- 루트로 로그인
su - martin
하고 jackd를 시작하세요 -> work - 루트로
sudo -u martin /usr/bin/jackd ...
-> 작동하지 않습니다 - 위와 같지만
sudo -E -u martin ...
-> 작동하지 않습니다.
내 /etc/security/limits.conf에는 다음 줄이 포함되어 있습니다.
@audio - rtprio 40
@audio - nice -20
@audio - memlock 1554963
sudo -u martin id
내가 오디오 그룹에 속해 있음이 표시되지만 루트는 그렇지 않습니다. 루트에서 마틴으로 sudo한 후 마틴에는 실시간 권한이 없습니다.
sudo -u martin sh -c "ulimit -e -r"
scheduling priority (-e) 0
real-time priority (-r) 0
오디오 그룹에 루트를 추가해도 아무런 차이가 없습니다. 루트에는 여전히 실시간 권한이 없으며 sudo -u martin
마틴 후에도 여전히 위와 같습니다.
답변1
martin
sudo는 루트 사용자의 환경을 보존하므로 사용자가 설정한 경로나 기타 환경 변수가 없을 수도 있습니다 . jack
이 옵션을 사용하여 쉘에서 sudo를 통해 실행할 수도 있습니다 -s /path/to/shell
.
그러나 루트로서 su
비밀번호를 입력하라는 메시지가 표시되지 않고 액세스(대체 사용자)할 수 있습니다(그리고 이를 달성하기 위해 sudo를 구성할 필요가 없습니다. sudo는 특히 루트가 아닌 사용자를 위한 것입니다).
su - martin -c /usr/bin/jackd ...
-c
su에게 실행할 명령을 알려주고, 이 -
옵션(완료를 통해서도 사용 가능 -l
)은 실행 중인 사용자(이 경우)와 유사한 환경을 설정하려고 시도합니다 martin
.