xautolock
私は一定時間活動がなければ画面をロックしてラップトップを一時停止する習慣があります。これは素晴らしい作品です。これは次xautolock
から始まります.xsessionrc
。
xautolock -time 60 -detectsleep -locker '~/bin/lockscreen --suspend' &
この~/bin/lockscreen
スクリプトの機能の1つは、ssh-add -D
実行中のSSHエージェントからすべてのSSHキーを削除することです。ただし、xautolock
これは作成時には機能しません.xsessionrc
。ssh-add -D
コマンドは認証プロキシと通信できないと文句を言います。
ただし、ssh-add -D
端末でこれをうまく実行できます。端末pkill xautolock
でコマンドを実行すると、すべてがxautolock
期待どおりに機能します。.xsessionrc
SSHエージェントとの会話ではssh-add -D
プロセスを作成できませんが、通常の端末を介して生成できるのはなぜですか?xautolock
.xsessionrc
ssh-add -D
xautolock
ps auf
このツリーを表示します。
root 24126 0.0 0.1 105812 5032 tty1 Ss 18:34 0:00 /bin/login --
andreas 24132 0.0 0.1 40232 4956 tty1 S 18:34 0:00 \_ -zsh
andreas 24140 0.0 0.0 4328 1576 tty1 S+ 18:34 0:00 \_ /bin/sh /usr/bin/startx
andreas 24162 0.0 0.0 15944 1952 tty1 S+ 18:34 0:00 \_ xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -auth /tmp/serverauth.afXu0ohTRz
root 24163 1.4 0.5 165868 20048 tty1 S 18:34 0:02 \_ /usr/bin/X -nolisten tcp :0 vt1 -auth /tmp/serverauth.afXu0ohTRz
andreas 24169 0.0 0.2 113572 10600 tty1 S 18:34 0:00 \_ x-window-manager
andreas 24203 0.0 0.7 489436 26380 tty1 Sl 18:34 0:00 \_ nm-applet
andreas 24204 0.0 0.0 20140 2700 tty1 S 18:34 0:00 \_ xautolock -time 60 -detectsleep -locker ~/bin/lockscreen --suspend
andreas 24209 0.0 0.0 22196 2680 tty1 S 18:34 0:00 \_ /usr/bin/unclutter -idle 1 -root
andreas 24212 0.0 0.0 10688 340 ? Ss 18:34 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-window-manager
私の唯一の理論は、xautolock
SSHエージェントの前に起動するため、forkssh-add
コマンドがエージェントの存在を知らないことです。しかし、それは奇妙に見えます。
ベストアンサー1
Xウィンドウマネージャはコマンドで起動しますssh-agent dbus-launcher --exit-with-session i3
。これは、SSHエージェントがウィンドウマネージャの前に起動されることを意味します。しかし、Debianは.xsessionrc
これより先にソース化されており、xautolocker
起動時にまだSSHエージェントが起動しておらず、ssh-add
エージェントと通信するために必要な環境変数もまだ設定されていませんでした。
1つの解決策は、.xinitrc
購入する前にエージェントを起動するように変更することです.xsessionrc
。
if command -v 'ssh-agent' >/dev/null 2>&1; then
eval $(ssh-agent -s)
fi
[ -e $HOME/.xsessionrc ] && . $HOME/.xsessionrc
x-window-manager
if command -v 'ssh-agent' >/dev/null 2>&1; then
ssh-agent -k
fi