ユーザーがログインしたときにコマンドを実行する

ユーザーがログインしたときにコマンドを実行する

Linuxデスクトップシステムでユーザーがログインしたときにコマンドを実行したいと思います。

他の投稿を読んだ後、成功しないままコマンドを挿入してみました~/.bashrc。さらに、システムはユーザーログインにグラフィカルインタフェースを使用するため、このコマンドはシェルの起動に関連してはいけません。

/etc/profile.dまた、結果のない埋め込みスクリプトの1つにコマンドを追加してみました。

別の方法がありますか?ログイン後、システムはどのファイルを読みますか?

答え1

グラフィックディスプレイマネージャがクラシックスタートファイルを読み取るという保証はありません。これはリリースとディスプレイマネージャの間で変わります。ただし、次のいずれかが機能するはずです。

  1. デスクトップ環境の基本的な方法を使用して起動アプリケーションを設定します。詳細は使用しているDEによって異なりますが、コマンドを実行するスクリプトを生成して起動アプリケーションのリストに追加できます。たとえば、私のシステム(Cinnamon)では、「システム設定」=>「アプリケーションの実行」でこれを行うことができます。

  2. 使用~/.xprofileこれがソースです少なくとも、GDM、LDM、LightDM、およびLXDMログインマネージャによって実行されます。

  3. 上記のいずれの方法も機能しない場合は、次のコマンドを追加してみてください~/.profile。これはログインシェルのデフォルトの初期化ファイルであり、ログイン時に一部のグラフィックシェルからも読み取られます。

  4. @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

関連情報