原因killall LightsOn
不起作用是因为所有运行的AppleScript应用程序的进程名称都是applet
。例如,可执行路径是:
../LightsOn.app/Contents/MacOS/applet
一般而言,假设进程未被挂起,可以使用killall applet
终止所有正在运行的AppleScript应用程序,当然这可能并不理想。
当进程挂起时,您需要使用KILL
信号,例如:
killall -KILL applet
但是,pkill
是否可以轻松定位特定的AppleScript应用程序,因为它已挂起...使用KILL
信号,例如:
pkill -9 -f LightsOn
要么:
pkill -KILL -f LightsOn
请注意,在这个例子中,-9
只是另一种说法-KILL
。
现在使用pkill
和使用该-f
选项,可以使用更多的完整参数列表,例如:
pkill -9 -f /Applications/LightsOn.app/Contents/MacOS/applet
然后,对于哪个applet
进程的目标没有歧义。可以使用尽可能多的完整参数列表,因为人们认为有必要针对正确的过程。
例如,pkill -9 -f LightsOn
将终止名为的AppleScript应用程序NoLightsOn
,因此始终使用足够的完整参数列表来终止正确的进程。
以供参考:
从pkill
手册页:
-f Match against full argument lists. The default is to match
against process names.
从killall
手册页:
Some of the more commonly used signals:
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill)
14 ALRM (alarm clock)
15 TERM (software termination signal)
请注意,这只是一个部分信号列表,并与许多可以终止进程的不同实用程序一起使用。有关其他信息,请参阅用于实用程序的各种手册页。
pkill -9 -f LightsOn
会做的!