前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在ubuntu中使用supervisor

在ubuntu中使用supervisor

作者头像
羽翰尘
修改2019-11-26 16:46:57
5850
修改2019-11-26 16:46:57
举报
文章被收录于专栏:技术向技术向

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/use_supervisor_in_ubuntu/

1. 安装

代码语言:txt
复制
sudo apt install supervisor

2. 配置一个程序

示例如下,在目录/etc/supervisor/conf.d/下创建redsocks2.conf,并加入:

代码语言:txt
复制
[program:redsocks2]
command     = /home/wenfeng/bin/redsocks2 -c /home/wenfeng/conf/redsocks2.conf
autostart = true
autorestart = true
redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = /var/log/supervisor/redsocks2.log
  • [program:x]:配置文件必须包括至少一个program,x是program名称,必须写上,不能为空
  • command:包含一个命令,当这个program启动时执行
  • directory:执行子进程时supervisord暂时切换到该目录
  • user:账户名
  • startsecs:进程从STARING状态转换到RUNNING状态program所需要保持运行的时间(单位:秒)
  • redirect_stderr:如果是true,则进程的stderr输出被发送回其stdout文件描述符上的supervisord
  • stdout_logfile:将进程stdout输出到指定文件
  • stdout_logfile_maxbytes:stdout_logfile指定日志文件最大字节数,默认为50MB,可以加KB、MB或GB等单位
  • stdout_logfile_backups:要保存的stdout_logfile备份的数量

3. 运行一个程序

如果是刚刚将conf文件放到/etc/supervisor/conf.d/目录下,重启supervisor以便识别

代码语言:txt
复制
sudo service supervisor restart

然后启动我们的程序

代码语言:txt
复制
sudo supervisorctl start awesome

如果supervisor遇到错误,可以在/var/log/supervisor/supervisord.log中查看日志;

如果app运行出现问题,可以在/srv/awesome/log/app.log中查看日志。

4. 其他

supervisor在运行ssh tunnel时总是退出

代码语言:txt
复制
[program:gpu_ssh_tunnel]
command     = /usr/bin/ssh  -C2qTnN -D 1080 gpu_name@gpu_domin -i /home/wenfeng/.ssh/id_rsa
autostart = true
autorestart = true
redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = /var/log/supervisor/gpu_ssh_tunnel.log

supervisorctl status显示

代码语言:txt
复制
gpu_ssh_tunnel                   FATAL     Exited too quickly (process log may have details)

自己构建监控脚本

代码语言:txt
复制
#!/bin/bash
while true
do
	procnum=`ps -ef| grep 'your_name@your_domin' | grep -v grep | wc -l`
	if [ $procnum -eq 0 ];then
		/usr/bin/ssh  -f -C2qTnN -D 1080 your_name@your_domin -p 88 -i /home/wenfeng/.ssh/id_rsa
	fi
	sleep 30
done

这样依旧不行,log中显示Host key verification failed.

最终发现,由于supervisor使用的是root账号运行ssh,会有一个新的knownhosts,没有输入yes接受所以会直接退出。

以下实验可以看出使用sudo运行时需要重新确认指纹

代码语言:txt
复制
sudo /usr/bin/ssh  -C2qTnN -D 1080 your_name@your_domin -p your_port -i /home/wenfeng/.ssh/id_rsa
The authenticity of host '[your_name]:88 ([your_ip]:88)' can't be established.
ECDSA key fingerprint is SHA256:M/7Vo2ZjnVVc********DgkZtIjrESKMIaj/rfryfDUmqc.
Are you sure you want to continue connecting (yes/no)? yes

解决方案就是先用root账户登录一下,或者在类似进程中,用supervisor的指定用户功能。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装
  • 2. 配置一个程序
  • 3. 运行一个程序
  • 4. 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档