!["systemctl --global"을 어떻게 사용해야 합니까?](https://linux55.com/image/185782/%22systemctl%20--global%22%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Systemd에는 플래그가 있고 --global
내 배포 Ubuntu에서 catch-22를 발견했습니다.
- 권한이 없는 사용자로 실행하면 systemctl에 유닛 파일을
/etc
. - 및 변수를 설정할 수 없기
sudo
때문에 작동하지 않습니다 .sudo
$DBUS_SESSION_BUS_ADDRESS
$XDG_*
sudo -E
환경을 보호하면 작동 할 수도 있고 작동하지 않을 수도 있습니다 . 세션 root
(예: 가상 콘솔)에서 실행하는 경우 확실히 작동합니다.
그것을 사용하는 올바른 방법은 무엇입니까 systemctl --global
?
답변1
--global
enable
: 및 와 함께 사용하면disable
전역 사용자 구성 디렉터리에서 작동하여 모든 사용자의 향후 모든 로그인에 대해 단위 파일을 전역적으로 활성화하거나 비활성화합니다.
이 플래그는 "글로벌" 수준의 서비스를 systemctl --global
나타내며 주로 / 사용자 단위 에서 사용됩니다.systemctl --user
enable
disable
모든 사용자들시스템에서.
단위와 달리 systemctl --system
활성화된 --global
단위는 그렇지 않습니다.시작개인 사용자까지로그인따라서 사용자 단위를 "원합니다". ( sudo
/ 는 su
이런 의미에서 사용자를 "로그인"하지 않는다는 점에 유의하세요. 아래 대안을 참조하세요.)
당신이 보면시스템 사용자 단위 검색 경로, 사용자가 아닌 사람이 쓸 수 없는 일부 "전역" 디렉터리가 포함되어 있음을 알 수 있습니다 root
. 이러한 디렉터리의 셀은 sudo systemctl --global
(모든 사용자에 대해) 또는 (개별 사용자에 대해) systemctl --user
관리 될 수 있습니다.
ls -l /usr/lib/systemd/user
ls -l /etc/systemd/user
sudo systemctl --global
관리 단위에만 사용문서, 주로 활성화/비활성화합니다. 사용자 단위를 전역적으로 수동으로 활성화하면 /etc/systemd/user
개별 사용자에 대한 Targets/wants 디렉터리 에 기호적으로 연결됩니다 ~/.config/systemd/user
.
ls -l ~/.config/systemd/user
데스크탑 시스템에는 (패키지) 설치 중에 기본적으로 활성화될 수 있는 꽤 많은 전역 사용자 단위가 있을 수 있습니다. "메모리 내" 유닛 목록에는 생성된 임시 유닛/"파일"도 포함됩니다.장비그리고범위. 예를 들어 --type service
좁은 범위를 사용합니다.
systemctl --global list-unit-files
systemctl --global list-units
systemctl --global list-units --all
사용자 단위 파일 목록은 --global
개인 목록과 매우 유사해 보이지만 --user
후자는 검색 경로에 (비전역) 사용자별 디렉터리를 포함합니다. 당신은 또한 볼 수 있습니다user.conf
, 어디추가 사용자 디렉터리구성할 수 있습니다.
systemctl --user list-units
systemctl --user list-unit-files
user.conf
현재 사용자에 대한 사용자 지정 추가 항목을 포함하여 조직 검색 디렉터리의 "실시간" 목록을 보려면 다음을 사용하세요.systemctl show
.
systemctl --user show --property 'UnitPath' --value
(에 있는 systemctl --global list-unit-files
항목을 제외하는 동안 해당 항목이 포함되어 있음을 확인했습니다 . 옳지 않거나 적어도 일관성이 없는 것 같습니까?)~/.config/systemd/user
systemctl --global list-units
사용자 유닛은 사용자가 로그인할 때까지 로드/실행되지 않으므로 --global status
로그인한 각 사용자(본인 및 다른 사용자)의 장치 상태를 볼 수 없습니다.
sudo
/는 실제로 시스템 관점에서 su
"적절한 로그인"을 수행하지 않으므로 다른 사용자의 단위를 관리하는 데 사용해서는 안됩니다. 대신에 보세요--machine
, 여기서 @
및 는 .host
현재 시스템을 참조하는 데 사용할 수 있습니다.sudo systemctl --user --machine [email protected]
# NOTE: demo status for yourself, but via sudo.
sudo systemctl --user --machine "${USER}@.host" status
모든 DBus 등 기능을 갖춘 별도의 세션으로 다른 사용자로 "로그인"하려면 다음을 사용하십시오.machinectl
을 시작합니다 shell
. (이것은 machinectl login
쉘도 시작하지만 더 번거로운 "수동" 로그인 프로세스라는 점에 유의하십시오.)
# NOTE: demo logging in as yourself, but with a custom/different login shell.
sudo machinectl shell "${USER}@.host" /bin/sh
당신은 또한 볼 수 있습니다loginctl
특히 "수동" 로그인이 필요 없이 enable-linger
장기 실행 서비스를 허용합니다 .--user