一、Linux 命令顺序执行
(一)指令顺序执行场景
在 Linux 系统中,常常会遇到需要按顺序执行多个命令的情况。例如,想要统计某网口 10 秒钟内网络数据包的变化,就可以使用ifconfig eth0; sleep 10; ifconfig eth0这样的命令组合。这里通过;将多个指令隔开,无论前面的指令执行是否成功,系统都会接着执行下一条指令。执行完这组命令后,把两次ifconfig eth0获取的数据进行相减,就能得到这 10 秒钟内的流量数据。
(二)使用&&和&的指令执行
&&的使用:在cat /tmp/kernel.log && rm -rf /tmp/kernel.log && touch /tmp/kernel.log这条命令中,&&起到了关键作用。它表示只有当前面的命令cat /tmp/kernel.log成功执行(返回值为 0)时,才会继续执行后面的命令。如果cat /tmp/kernel.log因为文件不存在等原因运行出错,后续的rm -rf /tmp/kernel.log和touch /tmp/kernel.log就不会被执行。可以通过echo $?来查看上一条指令的执行结果是否正确,0代表执行成功,非 0 则表示执行失败。
&的使用:如果将指令中的&&换成&,如cat /tmp/kernel.log & rm -rf /tmp/kernel.log,此时cat /tmp/kernel.log会在后台执行,同时rm -rf /tmp/kernel.log也会立即执行。不过这种写法在实际场景中一般较少使用,因为可能会导致一些不可预期的问题,比如在cat命令还未读取完文件时,文件就被rm命令删除了。