微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在linux中获得一系列的服务

在Linux shell脚本我使用下面的行来获取所有服务的列表,以便我可以find哪些是进一步运行或不,如果不是,那么我将尝试启动它们,如果无法启动,然后login条目。

service_array =($(service --status-all | rev | cut -d“”-f 1 | rev))

但对于在下标中有问号的服务,则不需要下面的条目。

[? ] appport

[? ]控制台设置

对于这些条目,它只是在控制台上输出,而不是在数组中input。 那么上面的问题是什么呢?

如何将YYYYMMDDHHMMSS转换为`date`可读的date

尝试运行python35脚本时使用nohup?

Java执行运行守护进程脚本的Bash脚本

如何根据第六栏的内容来勾选行

bash使用getopts

在grep中转义感叹号?

Grep在Linux中的一个列上

一个更好的Linux shell?

grep awk忽略字符

如何将文件从列表一个一个地input到脚本中?

尝试:

service_array=($(exec service --status-all | sed 's|.* ||'))

或更好:

readarray -t service_array < <(exec service --status-all | sed 's|.* ||')

没有sed:

readarray -t service_array < <(exec service --status-all) service_array=("${service_array[@]##* }")

完后还有:

service_array=() while read service; do service_array+=("$service"); done < <(exec service --status-all | sed 's|.* ||')

要么

service_array=() while read service; do service_array+=("$service"); done < <(exec service --status-all) service_array=("${service_array[@]##* }")

而sed的另一种选择是使用awk :

... | awk '{ print $NF }'

这是因为你的管道没有处理标准的错误输出。 这个? 意味着该服务具有未知状态并被写入stderr 。 不幸的是,这个信息缺乏man service 。

什么--status-all检查是否status正在处理作为参数在服务的相应的/ /etc/init.d脚本。 如果不是,则打印[ ? ] [ ? ]到标准错误

你的命令管道将会捕获所有的状态,如果你像这样运行它:

service_array=($(service --status-all 2>&1|rev|cut -d " " -f 1|rev))

如果你只想知道状态:

service_array=($(service --status-all 2>/dev/null|rev|cut -d " " -f 1|rev))

如果你只想要未知的状态:

service_array=($(service --status-all 2>&1 1>/dev/null|rev|cut -d " " -f 1|rev))

行尾可能有空格。 我会更好地使用这个

echo -e '[ ? ] appportn[ ? ] console-setup' | grep -o '[^ ]+[[:blank:]]*$'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐