who
FreeBSD 中的命令知道一个file
参数,从该参数读取有关登录用户的信息,默认为/var/run/utx.active
- 并且该文件通常是世界可读的......
下一个脚本可能就足够了:
#!/usr/local/bin/bash
while read jpath
do
echo JWHO: ${jpath:-$(hostname)}
who "${jpath}/var/run/utx.active"
done < <( jls -h path | sed '1s:.*::' )
示例输出:
JWHO: marvin.example.com
smith pts/0 7 nov 20:55 (adsl2343-some-another.example.com)
JWHO: /jails/jail1
JWHO: /jails/testjail
root pts/2 7 nov 20:55 (someother.example.com)
JWHO: /jails/dbjail
脚步:
- 显示所有正在运行的监狱的“根文件系统”的路径
/var/run/utx.active
为给定的监狱运行谁
- 跳过 jls 的标题行, - 所以第一个输出将是主机。
也许有人知道更简单的解决方案,例如通过对ps
输出进行排序或类似...
评论:您通常不想使用诸如command | while read
管道分叉新外壳之类的结构,并且您丢失了循环内设置的变量的值,done < <( commands )
通常更好...