【发布时间】:2018-09-30 21:03:40
【问题描述】:
我正在执行命令
lsof -nPs
命令的输出:
COMMAND PID TID USER FD TYPE DEVICE SIZE NODE NAME
systemd 1 root cwd DIR 253,0 4096 128 /
docker-co 10166 10173 root 0r CHR 1,3 1028 /dev/null
sshd 10592 root mem REG 253,0 263800 67353392 /usr/lib64/security/pam_systemd.so
sshd 10592 root DEL REG 0,5 21551641 /dev/zero
sshd 10592 root 0u CHR 1,3 1028 /dev/null
如果字段为空,有没有办法在字段值中添加一个虚拟值?
例如:
COMMAND PID TID USER FD TYPE DEVICE SIZE NODE NAME
systemd 1 null root cwd DIR 253,0 4096 128 /
docker-co 10166 10173 root 0r CHR 1,3 null 1028 /dev/null
sshd 10592 null root mem REG 253,0 263800 67353392 /usr/lib64/security/pam_systemd.so
sshd 10592 null root DEL REG 0,5 null 21551641 /dev/zero
sshd 10592 null root 0u CHR 1,3 null 1028 /dev/null
注意:
- 主要问题是 TID 字段,它出现在 CentOs 7 中,但不在 Centos 6 中。
- 我正在制作一个适用于两个操作系统的脚本。 (CentOs 6 和 CentOs 7)
- 我想要实现的是,只要 TID 出现在输出中,就忽略它。
- 我认为实现目标的方法是检查输出中的字段数(使用 awk 的 NF),并检查字段数是否为 10 => 忽略 TID。
- 为什么它不起作用? : 可能存在 SIZE 和 DEVICE 的值为空的情况。在这种情况下,字段数将小于 10,因此当 TID 为非空时脚本将无法处理该场景。所以,它不能忽视它。
所以,如果有办法将虚拟值放入空字段,它将解决问题。
如果值为空,有没有办法放置一个虚拟令牌。?像null,所以我可以检查并忽略该值是否为null。
任何其他解决方案都会有很大帮助。
谢谢。
【问题讨论】:
标签: linux shell awk centos lsof