如何仅将命令的某些结果传递给另一个或If语句?

时间:2013-05-08 17:33:24

标签: macos bash shell

我正在尝试找到一种方法来构建一个cron作业,该作业将根据他们上次主动移动鼠标时在OSX中注销空闲用户。 OSX的内置功能可以记录每个人,并且只有整个机器处于空闲状态。我能够找出谁是空闲的唯一方法是使用'w'然后给我一些列,其中一列有空闲时间。如何只管理那个字段中的那些数字并忽略其余的数字?有更简单的方法吗?

我怎么写这个:

1.Issue command w

2.检查用户名以查看闲置时间是否超过30分钟,如果是, 发出命令ps -Ajc | grep loginwindow 并为超过空闲时间的用户找到loginwindow的用户名和pid 并发出sudo kill -9“无论该用户的登录窗口是什么pid”

并从此脚本中排除“whateverusernamehere”(这样它将保持登录状态)。

1 个答案:

答案 0 :(得分:0)

我知道你问过管道。但这样做的标准方法是: 考虑使用TMOUT变量。

在登录资料中添加以下内容:

declare -r TMOUT=14400

这会在14400秒,4小时不活动后注销非活动的交互式用户。

你的解决方案,特别是杀人-9,有点苛刻,可能会导致问题。有些用户可以打开文件,你的方法不会检测到,并且你关闭了用户,你可以破坏文件。