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

防止执行特定应用程序的Shell脚本,shell,terminal,Shell,Terminal,我试图在终端中编写一个脚本,使您无法打开特定的应用程序 以下是脚本: #!/bin/bash while [ true ]; do killall iChat done 当我运行脚本时,我收到一条消息,上面说“没有找到属于您的匹配进程”。这意味着什么?我如何修复它 我还想在bash中运行这个脚本,这样当我killall Terminal时,它将继续运行。当前,当Ikillall Terminal时,整个脚本停止工作 如何做到这一点?该过程不会被命名为iChat,而是类似于/Applica

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

以下是脚本:

#!/bin/bash

while [ true ]; do

killall iChat

done
当我运行脚本时,我收到一条消息,上面说“没有找到属于您的匹配进程”。这意味着什么?我如何修复它

我还想在bash中运行这个脚本,这样当我
killall Terminal
时,它将继续运行。当前,当I
killall Terminal
时,整个脚本停止工作


如何做到这一点?

该过程不会被命名为iChat,而是类似于/Applications/iChat.app/Contents/MacOS/iChat的名称。将正则表达式与killall一起使用可终止名称包含给定字符串的进程:

基拉尔-米卡特

现在,“while true”是什么意思呢?这个循环将运行得非常快,锁定CPU,什么都不做。也许你至少想睡一会儿

最后,要运行循环,以便它在不终止脚本运行的终端的情况下终止终端,只需不要在终端中运行它,而是在后台运行它。把它放在一个文件里,然后说


killer&

该过程将不会命名为iChat,而是类似于/Applications/iChat.app/Contents/MacOS/iChat的名称。将正则表达式与killall一起使用可终止名称包含给定字符串的进程:

基拉尔-米卡特

现在,“while true”是什么意思呢?这个循环将运行得非常快,锁定CPU,什么都不做。也许你至少想睡一会儿

最后,要运行循环,以便它在不终止脚本运行的终端的情况下终止终端,只需不要在终端中运行它,而是在后台运行它。把它放在一个文件里,然后说


killer&

这不是阻止进程启动的方法。您需要做的是
chown root.root/path/to/iChat
,因此进程由
root
拥有,然后
chmod a-x/path/to/iChat
。这将阻止进程可执行,权限只能由root用户更改。

这不是阻止进程启动的方法。您需要做的是
chown root.root/path/to/iChat
,因此进程由
root
拥有,然后
chmod a-x/path/to/iChat
。这将阻止进程的可执行性,权限只能由root用户更改。

不清楚为什么需要这样做,也不清楚违规者的决心如何

如果您针对的是不成熟的违规者,那么类似于SiegeX的方法(chmod 500/chmod a-x)将阻止应用程序启动

如果你必须在事后进行杀戮,那么killall可能会起作用,但这有点冒险(你冒着杀戮你不想杀戮的进程的风险)


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

不清楚你为什么需要这样做,也不清楚违规者的决心有多大

如果您针对的是不成熟的违规者,那么类似于SiegeX的方法(chmod 500/chmod a-x)将阻止应用程序启动

如果你必须在事后进行杀戮,那么killall可能会起作用,但这有点冒险(你冒着杀戮你不想杀戮的进程的风险)


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

括号是不必要的:“虽然是真的;do’很好用。括号是不必要的:’虽然是真的;do’工作得很好。好的,很酷,现在我如何在后台运行代码?代码是什么?我在那里有一个无限循环,因此每当用户尝试打开应用程序时,它都会在每次尝试时终止。老实说,我认为Slartibartfast的答案在解决所述问题方面更好。但是如果出于某种原因需要执行此操作:在后台运行命令只需在命令后面加一个“&”字符即可。在我上面的回答中,上一个例子中的“&”在后台运行脚本“killer”。好的,酷,现在我该如何在后台运行代码?代码是什么?我在那里有一个无限循环,因此每当用户尝试打开应用程序时,它都会在每次尝试时终止。老实说,我认为Slartibartfast的答案在解决所述问题方面更好。但是如果出于某种原因需要执行此操作:在后台运行命令只需在命令后面加一个“&”字符即可。在我上面的回答中,最后一个例子中的“&”在后台运行脚本“killer”。