我正在尝试在终端中编写一个脚本,使您无法打开特定的应用程序。
这是脚本:
#!/bin/bash
while [ true ]; do
killall iChat
done
当我运行脚本时,我收到一条消息“未找到属于您的匹配进程”。这是什么意思,我该如何解决?
此外,我想在bash中运行此脚本,以便在killall Terminal
时它将继续运行。目前,当我killall Terminal
时,整个脚本停止工作。
如何做到这一点?
答案 0 :(得分:4)
这不是阻止进程启动的方法。您需要做的是chown root.root /path/to/iChat
,因此该流程归root
所有,然后归chmod a-x /path/to/iChat
所有。这将阻止进程可执行,并且权限只能由root更改。
答案 1 :(得分:1)
这个过程不会被命名为iChat,而是像/Applications/iChat.app/Contents/MacOS/ichat。使用带有killall的正则表达式来终止名称包含给定字符串的进程:
killall -m iChat
现在,“真实吗?”这个循环将非常快速地运行,盯住你的CPU而不做任何事情。也许你想睡一会儿,至少?
最后,要运行循环以便终止终端而不杀死运行脚本的终端,只是不要在终端中运行它 - 在后台运行它。把它放在一个文件中,然后说出像
这样的东西杀手&
答案 2 :(得分:1)
目前尚不清楚为什么需要这样做,也不清楚违规者的确定程度。
如果您正在与非复杂的违规者合作,类似于SiegeX的方法(chmod 500 / chmod a-x)会阻止应用程序启动。
如果你必须在事后杀人,那么killall可以工作,但这样做有风险(你冒着杀死你不想杀死的进程的风险)。
从根本上说,用户通常可以下载源代码(或者他们自己的二进制代码)并以这种方式编译和运行软件。这项任务非常艰巨。