我曾经xdotool
自动化一些操作。它从电子表格中获取数据,并将其“输入”到网站中,而我不必手动复制并粘贴所有数据,从而节省了数百小时的工作时间。这是通过一个简单的 while 循环运行的,并使用awk
从电子表格中提取的数据。
问题是,有时在测试新的xdotool
Bash 脚本时,或者只是在某些随机情况下,xdotool
开始对事物造成严重破坏,并且很难阻止。我必须切换回终端窗口,然后快速按 CTRL+C,但与此同时,它可能会做一些破坏性的事情,例如在终端中输入可能错误执行的潜在危险代码。我实际上遇到的最严重的问题是它接管了我而无法重新控制事情。
有没有某种方法可以将某种“终止开关”集成到 Bash 脚本中,例如,如果我按下键盘上的某个组合键,它会告诉它立即停止运行?
答案1
在您选择的窗口管理器中创建一个调用以下命令的快捷方式:
pkill -f xdotool
xdotool
这将杀死命令行中的所有进程,在大多数用例中这应该是一个足够准确的终止开关。
然后,每当您要运行潜在危险的脚本时,请从另一个 shell 实例执行此操作:
bash -c 'while true; do xdotool ...; done'
这样,每当脚本失控时,您都可以使用快捷方式杀死它。
答案2
首先,运行实验脚本时,不要让它们修改生产数据。将脚本指向测试数据/URL,使其不会造成真正的损害。
其次,您可以将 xdotool 的调用包装在 if 语句中,以便它仅在某些文件不存在时运行。要停止 xdotool 的所有实例,您只需创建此文件。这是用 Perl 编写的示例,可以轻松翻译为您最喜欢的脚本语言。
运行工具.pl
#!/usr/bin/perl
use strict;
my $stop_file = "/tmp/dont-run-xdotool.txt";
if (! -e $stop_file) { # run xdotool here }
exit 0;