小编int*_*ore的帖子

如何提取命令的退出代码?

如何提取命令的退出代码并在条件中使用它?例如看下面的脚本:

i=4
if [[ $i -eq 4 && $(command) -eq 0 ]]
    then
            echo "OK"
    else
            echo "KO"
    fi
Run Code Online (Sandbox Code Playgroud)

如果这两个条件都满足,脚本应该做一些事情。在第二种情况下,我需要检查退出状态(而不是上面给出的脚本中的命令输出),以了解命令是否成功。

bash exit-status

9
推荐指数
2
解决办法
2055
查看次数

杀死父进程不会杀死子进程

我有个问题。学习进程管理我观察到一个奇怪的行为,在 CentOS 7 上。我知道杀死父进程,子进程也被杀死。但在下面的情况下不是。我运行了命令 dd,例如:

[root@server2 ~]# dd if=/dev/zero of=/dev/null &
[1] 1756

[root@server2 ~]# ps fax | grep -B2 dd
1737 pts/2    S      0:00         \_ su -
1741 pts/2    S      0:00             \_ -bash
1756 pts/2    R      1:18                 \_ dd if=/dev/zero of=/dev/null
Run Code Online (Sandbox Code Playgroud)

之后,我尝试杀死(使用 SIGKILL 信号)父进程,即 bash,但此操作不会杀死 dd 进程:

[root@server2 ~]# kill -9 1741
Killed
[user@server2 ~]#
Run Code Online (Sandbox Code Playgroud)

shell 终止,但正如您在顶部命令输出中看到的那样,dd 进程仍在工作:

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1756 root      20   0  107948    612    512 R 99.9 …
Run Code Online (Sandbox Code Playgroud)

process kill

6
推荐指数
1
解决办法
2万
查看次数

如何将命令输出视为文本

我需要将命令输出与字符串进行比较。这是场景:

pvs_var=$(pvs | grep "sdb1") 
Run Code Online (Sandbox Code Playgroud)

所以 pvs var 是:/dev/sdb1 vg_name lvm2 a-- 100.00g 0

if [[ $($pvs_var | awk '{ print $2 }') = vg_name ]]; then
    do something
fi
Run Code Online (Sandbox Code Playgroud)

问题是 if 语句的输出是

-bash: /dev/sdb1: Permission denied
Run Code Online (Sandbox Code Playgroud)

我不明白这种行为。谢谢

bash string command output

5
推荐指数
1
解决办法
1974
查看次数

查找必须以任何字符结尾但不仅仅是“.log”的日志文件名

我需要找到所有超过 5 天的日志文件,并且文件名必须以 .log 和任何字符结尾(即 first.log20210701 但不是 first.log)。我试过这个命令,但它也显示“.log”

find . -type f -name '*.log*' -mtime +5 
Run Code Online (Sandbox Code Playgroud)

请问你能帮帮我吗?

linux find

-1
推荐指数
1
解决办法
53
查看次数

标签 统计

bash ×2

command ×1

exit-status ×1

find ×1

kill ×1

linux ×1

output ×1

process ×1

string ×1