-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
读取devices这种方式也是线程阻塞的吗?有考虑过使用pynput这种方式吗 #1
Comments
|
感谢您的答复。 监听的 InputEvent 会随着键盘的插拔发生改变 因为需要达到效果的环境是centos6.9,所以我在/etc/rc.d/init.d中放入了自启动脚本,脚本会在系统加载时执行这行命令 python3 /usr/pynput/workinput.py (脚本和py文件都赋予了777权限),然后我重启系统,在图形界面上使用root登录后,仅看到脚本日志,没有py文件产生的鼠标键盘事件收集日志。所以想请问下您,是否是我的自启动配置不正确,还是有其他的方式来实现这种自启动呢? 我在stackoverflow上也提出了这个问题,里面有详细的源码和日志信息 |
今天找到init.d放自启动脚本不生效的原因了,主要是init.d在执行脚本时/etc/profile文件还没有加载,此时运行python命令会报找不到openssl相关库(3.8.7不自带openssl,但是使用python命令又需要,所以手动下载了openssl库,配置该库lib到profile以便所有用户都能获取到,然后重新重新配置了python3.8.7的Setup文件并编译) 目前将启动脚本放到了/etc/profile.d文件夹下,在用户登录后系统会自动运行改文件夹下的所有脚本。很庆幸,这样设置后在用户登录后,日志成功记录了用户的鼠标和键盘点击事件,但是交互界面被阻塞了,如下图所示: 我先猜想是py文件里主进程阻塞导致,然后在脚本内使用了线程来起监听,但是结果还是一样被阻塞。现在想一下,应该是系统加载profile.d文件夹内的所有sh脚本的主进程被阻塞了,想请问下您是如何解决这个阻塞的问题呢? |
我现在的实现方式是,监听的进程让他阻塞在后台运行,并做好需要的埋点;逻辑计算和交互新起一个进程 ;我的需求场景里,数据传递是单向的,也就是从监听进程到逻辑进程,目前都通过 redis,。个人感觉只能用进程间通信的方式来解决了。 你把监听配置成了启动加载,是否可以把监听脚本独立出来,然后以例如 (脚本执行命令 &)这样的方式运行,这样脚本进程会成为1号进程的子进程,不会阻塞加载的进程,我猜这样是可以的 |
我的问题已经解决了。 我使用的环境是centos6.9,python版本3.8.4 1.关于不同用户登录系统重复启动监听程序的问题 2.如何判断当前的鼠标和键盘操作究竟是谁发起的 *另外我发现一个有趣的事: 再次感谢Kuangcp 您宝贵的时间并不厌其烦的答疑! |
这个思路挺好的,在并行的用户活跃数不多的情况就比较精确了, 但是 w -s 不是总的活跃时间么,3s取样一次的按键数据, 这两个就没有必然的关联了,除非 计算 w -s 在3s 内的变化量。 我用的 manjaro 没有 -l 参数,不知道这个参数的意义 |
感谢您的肯定。 在我使用的centos6.9环境内,w后面跟-l和-s意义如下: IDLE表示某个程序上次从终端开始执行到现在所持续的时间。 这种方式就像您说的在多用户同时活跃使用系统时就会变的不准确,我目前也想不出更好的办法了。 |
你好
看了你的实现方式,实时监听devices文件流。pynput库也提供了监听鼠标键盘的方法,不知道pynput的视线方式是否跟你的相同。
我最近在做一款centos系统下使用python记录当前用户键盘和鼠标点击次数的工具,我希望这个工具能在后台运行,但是目前使用pynput和pyxhook在交互界面运行脚本都可以捕获并记录下来,一旦配置到自启动脚本里运行,就没有数据了。想请教一下,有没有什么好的办法
感谢。
The text was updated successfully, but these errors were encountered: