Shell脚本,以防止执行特定的应用程序

时间:2011-03-26 02:25:22

标签: shell terminal

我正在尝试在终端中编写一个脚本,使您无法打开特定的应用程序。

这是脚本:

#!/bin/bash

while [ true ]; do

killall iChat

done

当我运行脚本时,我收到一条消息“未找到属于您的匹配进程”。这是什么意思,我该如何解决?

此外,我想在bash中运行此脚本,以便在killall Terminal时它将继续运行。目前,当我killall Terminal时,整个脚本停止工作。

如何做到这一点?

3 个答案:

答案 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可以工作,但这样做有风险(你冒着杀死你不想杀死的进程的风险)。

从根本上说,用户通常可以下载源代码(或者他们自己的二进制代码)并以这种方式编译和运行软件。这项任务非常艰巨。