![如何追踪xkbmap的变化?](https://linux22.com/image/93114/%E5%A6%82%E4%BD%95%E8%BF%BD%E8%B8%AAxkbmap%E7%9A%84%E5%8F%98%E5%8C%96%EF%BC%9F.png)
我在 Ubuntu (14.04.5) NoMachine 服务器上运行 Fluxbox。我有一个非常简单的startup
文件:
fluxbox="$HOME/.fluxbox"
stderr="$fluxbox/stderr"
(umask 077; > "$stderr")
exec 2> "$stderr"
setxkbmap de nodeadkeys
exec ssh-agent fluxbox -verbose -log "$fluxbox/log"
我的问题是,在我在启动文件中设置 xkbmap 后,某些进程正在修改它。nodeadkeys
在我设置它后大约一秒钟,该变体就会丢失。为了跟踪这种行为,我编写了一个跟踪程序,我在setxkbmap
命令前面启动该程序。这是我的跟踪脚本。
#! /bin/bash
set -eu
exec > $HOME/setxkbmap.trace
n=${1:-100000}
while ((n>0)); do
date +"%T.%6N"
setxkbmap -query
n=$((n-1))
done
当脚本启动时,变量被设置:
$ head -5 setxkbmap.trace
16:09:04.930663
rules: evdev
model: evdev
layout: de
variant: nodeadkeys
大约一秒钟后,变体消失了:
$ grep -A 5 nodeadkeys setxkbmap.trace | tail -5
16:09:05.864251
rules: evdev
model: evdev
layout: de
16:09:06.309512
我如何知道哪个进程正在更改选项?