检查进程是否在Linux上运行的最佳实践?

时间:2017-04-14 02:22:02

标签: linux bash process chef

我使用下面的脚本安装了厨师服务器。我是linux的新手,我正在尝试学习如何设置自己的厨师服务器。我运行了chef.io提供的命令,脚本成功了。我真的不确定如何检查或我应该怎么做以检查进程是否正在运行。有关如何查看进程是否正在运行的linux的最佳做法是什么?我能做些什么来找出我需要知道的东西?

        #!/bin/bash \
echo "Do your provisioning here" \
sudo wget https://packages.chef.io/files/stable/chef-server/12.14.0/el/7/chef-server-core-12.14.0-1.el7.x86_64.rpm \
sudo chmod a+x chef-server-core-12.14.0-1.el7.x86_64.rpm
sudo rpm -Uvh ./chef-server-core-12.14.0-1.el7.x86_64.rpm
sudo chef-server-ctl reconfigure \
sudo openssl rsa -in private.pem -outform PEM -pubout -out ~/.ssh/chef-server.pem \
sudo chef-server-ctl user-create admin 'admin' 'email' 'password' --filename ~/.ssh/chef-server.pem \
sudo openssl rsa -in private.pem -outform PEM -pubout -out ~/.ssh/chef-server-validator.pem \
sudo chef-server-ctl org-create short_name 'idevops' --association_user admin --filename ~/.ssh/chef-server-validator.pem \
sudo openssl rsa -in private.pem -outform PEM -pubout -out ~/.ssh/chef-coffee-server-validator.pem \
sudo chef-server-ctl org-create 4thcoffee 'iDevops 4th Coffee' --association_user admin --filename ~/.ssh/chef-coffee-server-validator.pem \
sudo chef-server-ctl install chef-manage \
sudo chef-server-ctl reconfigure \
sudo chef-manage-ctl reconfigure \
sudo chef-server-ctl install opscode-push-jobs-server \
sudo chef-server-ctl reconfigure \
sudo opscode-push-jobs-server-ctl reconfigure \
sudo chef-server-ctl install opscode-reporting \
sudo chef-server-ctl reconfigure \
sudo opscode-reporting-ctl reconfigure \
sudo chef-server-ctl install PACKAGE_NAME --path /path/to/package/directory \
sudo chef-server-ctl install chef-manage --path /root/packages \
sudo mkdir /etc/opscode && sudo touch /etc/opscode/chef-server.rb \
sudo echo "license['nodes'] = 0" >> /etc/opscode/chef-server.rb \
sudo chef-server-ctl reconfigure

4 个答案:

答案 0 :(得分:2)

好的,你可以在网上找到一些地方,你要做的第一件事就是检查流程是否正在运行。

ps aux | grep process_name

然后,如果它正在运行,您仍然无法访问它。您将需要使用netstat命令和grep作为端口。

if (line.back() == '\r') {
    line.pop_back();
}

你看看服务是否在它应该是的端口上运行。它会说它的倾听。侦听意味着端口正在寻找该端口上的通信。这意味着应用程序已启动并正在寻找端口上的通信,或者该端口被另一个应用程序使用,这就是为什么它没有启动。

通常你会看到lgos tail -f -n 100 / path / to / log / file
   -n是行数     -f是一个连续的跟随,所以你如何看文件。如果你没有指定它,它将只有100行到屏幕。

答案 1 :(得分:1)

如果您只想手动检查,请登录服务器并运行:

ps auxw | grep YOUR_PROCESS_NAME

答案 2 :(得分:1)

首先,在我知道它们工作之前,我不会从脚本运行命令。 您可能没有运行该服务:

    sudo service chef-server status #would be a good place to start 

要检查进程是否在linux上运行,我建议从以下开始:

    ps aux | grep <part of the process name>
    ps aux | grep chef

如果您不喜欢aux的输出,您也可以使用-ef like:

    ps -ef | grep <part of the process name>
    ps -ef | grep chef

如果你知道应该打开哪个进程,你可以使用netstat:

    netstat -anp | grep <port number>

示例:寻找正在运行的nginx或apache服务器:

    netstat -anp | grep 80

观察日志我喜欢使用tail命令:

    tail -f /var/log/<name of application folder/<name of log>

示例:观看nginx日志:

    tail -f /var/log/nginx/nginx.log

有时观看系统日志也很有帮助:

    tail -f -n 100 /var/log/syslog

如果要查找来自其他计算机的传入连接:

    sudo tcpdump -vvv -i any port <port number>

答案 3 :(得分:0)

您发布的输出中有一个相对较大的提示(例如chef-server-ctl status),

The status subcommand is used to show the status of all services available 
to the Chef server. The results will vary based on the configuration of a 
given server.

或,chef-server-ctl status SERVICE_NAME

where SERVICE_NAME represents the name of any service that is listed after 
running the service-list subcommand.

另请参阅chef-server-ctl (executable)处的start子命令(位于页面底部)