如果脚本在后台运行而不是在活动控制台中,如何弹出一个询问用户输入的对话框? / EDIT
当我从udev或cron运行bash脚本时,它通常会在后台的某个地方安静地运行。示例可以插入外部硬盘运行rsync进行数据备份。所以不是每次我插入硬盘都要启动此操作。
启动某些用户输入对话框并询问是或否的最简单方法是什么?我可以用PyQt编写一些接口,但我希望尽可能少的依赖,最好是跨窗口管理器,甚至可能没有窗口管理器。
谢谢!
答案 0 :(得分:1)
编辑2:轻量级(因此预期的丑陋)版本是xmessage,这可能是问题的答案,除非你有一个更好的:
xmessage "Do you want to run the backup script?" -buttons yes,no
http://linux.byexamples.com/archives/87/using-gui-dialog-box/
编辑:所以KD的KDialog,X有什么非常轻量级的吗?http://www.linux-magazine.com/Issues/2009/99/Zenity-and-KDialog
kdialog --title "Do you want to run the backup script?"
--yesno "Do you want to run the backup script?"
我目前倾向于zenity,唯一的麻烦是它在kde上引入了一系列gtk依赖关系,但它是跨平台的并且适用于Windows。从本质上讲,这是我所寻求的:
if zenity --question --text="Please press a button."; then
zenity --info --text="You pressed Yes\!"
else
zenity --error --text="You pressed No\!"
fi
但希望它在资源/依赖关系上要轻得多。还有其他建议吗?
答案 1 :(得分:0)
一种简单的方法是让自动脚本只是通过电子邮件发送给您,或者通过wall
向警告提示(包含真实脚本的位置)。
另一种方法是自动脚本touch
/var/lib
{{1}}中的文件,如果文件在5分钟后仍然存在则继续。这为用户提供了停止进程的选项(通过删除文件),但保持了一些自动化。
答案 2 :(得分:0)
这不是你应该首先处理cron或udev的东西。编写一个用户守护进程,监听相应的D-Bus消息并执行相应的操作。
答案 3 :(得分:0)
这应该在linux或超级用户或服务器故障中发布。
但是,在 linux读取用户输入上的头号谷歌搜索链接回到StackOverflow: https://www.google.com/search?q=linux+read+user+input&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a&channel=fflb
所以我猜它不会太基础。
同样, linux调用命令usb设备插件链接到ServerFault的第三个左右结果: https://serverfault.com/questions/399698/execute-a-command-when-a-device-is-connected-via-usb
我会将这两者结合起来作为练习。