Linux 데스크탑 시스템에서 사용자가 로그인할 때 명령을 실행하고 싶습니다.
다른 게시물을 읽은 후 성공하지 못한 채 명령을 삽입해 보았습니다 ~/.bashrc
. 또한 시스템은 사용자 로그인을 위해 그래픽 인터페이스를 사용하므로 이 명령은 셸 시작과 관련되어서는 안 됩니다.
/etc/profile.d
또한 결과가 없는 포함된 스크립트 중 하나에 명령을 추가해 보았습니다 .
다른 방법이 있나요? 로그인 후 시스템은 어떤 파일을 읽나요?
답변1
그래픽 디스플레이 관리자가 클래식 시작 파일을 읽는다는 보장은 없습니다. 이는 릴리스와 디스플레이 관리자 간에 변경됩니다. 그러나 다음 중 하나가 작동해야 합니다.
데스크탑 환경의 기본 방법을 사용하여 시작 응용 프로그램을 설정합니다. 세부 사항은 사용 중인 DE에 따라 다르지만 명령을 실행하는 스크립트를 생성하여 시작 애플리케이션 목록에 추가할 수 있습니다. 예를 들어, 내 시스템(Cinnamon)에서는 "시스템 설정" => "응용 프로그램 실행"을 통해 이 작업을 수행할 수 있습니다.
사용
~/.xprofile
,이것이 소스입니다최소한 GDM, LDM, LightDM 및 LXDM 로그인 관리자에 의해 수행됩니다.위의 방법 중 어느 것도 작동하지 않으면 다음 명령을 추가해 보십시오
~/.profile
. 이것은 로그인 쉘의 기본 초기화 파일이며 로그인 시 일부 그래픽 쉘에서도 읽습니다.@derobert가 의견에서 지적했듯이 다음을 사용할 수도 있습니다.무료 데스크탑 표준:
자동 시작 디렉터리는 "데스크탑 기본 디렉터리 사양"의 "이 사양 참조" 섹션에 정의된 대로 $XDG_CONFIG_DIRS/autostart입니다.
동일한 파일 이름이 여러 자동 시작 디렉터리에 있는 경우 가장 중요한 디렉터리의 파일만 사용해야 합니다.
예: $XDG_CONFIG_HOME이 설정되지 않은 경우 사용자 홈 디렉터리의 자동 시작 디렉터리는 ~/.config/autostart/입니다.
예: $XDG_CONFIG_DIRS가 설정되지 않은 경우 시스템 전체 자동 시작 디렉터리는 /etc/xdg/autostart/입니다.
예: $XDG_CONFIG_HOME 및 $XDG_CONFIG_DIRS가 설정되지 않고 /etc/xdg/autostart/foo.desktop 및 ~/.config/autostart/foo.desktop 파일이 모두 존재하는 경우 ~/.config/autostart/foo. ~/.config/autostart/가 /etc/xdg/autostart/보다 더 중요하므로 데스크탑이 사용됩니다.
~/.bashrc
여기서는 전혀 관련이 없으며 대화식 비로그인 쉘에서만 읽을 수 있으므로 그래픽 여부에 관계없이 로그인 쉘에서는 무시됩니다 .
답변2
또 다른 옵션은 pam을 사용하는 것입니다. 이는 로그인 작업을 정의하는 정확한 방법을 제공합니다.
일반적인 작업의 경우 pam_exec(http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html). 그러나 보다 구체적인 작업을 안전한 방식으로 수행해야 하는 경우 일반적으로 사용되는 pam_mount(로그인 마운트용 -http://manpages.ubuntu.com/manpages/hardy/man8/pam_mount.8.html) 또는 pam_echo (사용자에게 임의의 메시지를 보내기 위해 -http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html).
일반적으로 pam은 매우 깔끔한 사용자 정의 로그인 시스템이므로 다른 사람들이 제안한 것처럼 잠재적으로 안전하지 않은 스크립트에 의존하기보다는 이에 대해 더 자세히 알아보고 싶을 수도 있습니다.
예
상당히 일반적인 /etc/pam.d/system-auth를 고려하면 로그인 후 pam_exec를 다음과 같이 사용할 수 있습니다.
session optional pam_ssh.so
session required pam_limits.so
session required pam_env.so
session optional pam_mktemp.so
session required pam_unix.so
session optional pam_exec.so /usr/local/bin/my_prog
session optional pam_permit.so
/usr/local/bin/my_prog
사용자가 성공적으로 로그인한 후 실행 중인 프로그램은 어디에 있습니까?
답변3
이 주제에 따르면:로그인 후 자동으로 명령을 실행하시겠습니까?
.bashrc
애플리케이션을 시작하기 위한 솔루션과 솔루션이 (필요한 것이 아님) 있습니다. 나는 Daniel S.의 말을 인용합니다:
gnome-session-properties
시작 응용 프로그램을 구성하는 데 사용할 수 있습니다.또는 시스템 시작 시 애플리케이션을 실행하려면 다음과 같이 crontab에 규칙을 추가할 수 있습니다( edit crontab 사용
crontab -e
).@reboot /run/this/program/at/boot >/dev/null 2>&1