学做蛋糕的网站,网站开发目录,wdcp怎么上传做好的网站,当前网站开发的语言supervisord 使用指南
supervisord的安装
supervisor是一系列python脚本文件#xff0c;以python package的形式管理#xff0c;可以用于UNIX类系统的进程管理。 安装supervisor也相当简单#xff0c;只需要用pip安装即可。
sudo pip install supervisor但是有可能将其安…supervisord 使用指南
supervisord的安装
supervisor是一系列python脚本文件以python package的形式管理可以用于UNIX类系统的进程管理。 安装supervisor也相当简单只需要用pip安装即可。
sudo pip install supervisor但是有可能将其安装在了~/.local/lib下会导致systemd自启动管理软件找不到supervisor这个包。典型的错误为 from supervisor.supervisord import main. ERROR: No MODULE named supervisor。 此时卸载supervisor重装需安装在系统python的dist-packages目录下比如通过--target指定安装位置确保supervisor和其他python包在一个目录常见的如numpy等
sudo pip install --target/usr/local/lib/python3.8/dist-packages supervisor和systemd一起管理自启动
启动链systemd → supervisord → YOUR_APP
其中两个核心配置文件/etc/systemd/system/supervisord.service 和 /etc/supervisord/supervisord.conf。/etc/supervisord/目录和文件自行创建
supervisord.service为systemd启动系统常驻服务supervisord的配置文件参考如下
[Unit]
Descriptionsupervisord - Supervisor process control system for UNIX;
Afternetwork.target[Service]
Typeforking
ExecStart/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf
ExecReload/usr/local/bin/supervisorctl reload
ExecStop/usr/local/bin/supervisorctl shutdown[Install]
WantedBymulti-user.targetsupervisord.conf为supervisord启动自定义程序的配置文件参考如下
[unix_http_server]
file/tmp/supervisor.sock ; path to your socket file[supervisord]logfile/home/Alex/shepherd/supervisord/supervisord.log ; supervisord log file
logfile_maxbytes50MB ; maximum size of logfile before rotation
logfile_backups10 ; number of backed up logfiles
loglevelinfo ; info, debug, warn, trace
pidfile/var/run/supervisord.pid ; pidfile location
nodaemonfalse ; run supervisord as a daemon
minfds1024 ; number of startup file descriptors
minprocs200 ; number of process descriptors
userAlex ; default user
childlogdir/home/Alex/shepherd/supervisord ; where child log files will live[inet_http_server]
port 127.0.0.1:9001[rpcinterface:supervisor]
supervisor.rpcinterface_factory supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]
serverurlunix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket[program:roscore]
command/home/Alex/shepherd/supervisord/startup/rosl_roscore start-foreground
autostarttrue
stopsignalTERM
stopasgrouptrue
stderr_logfile /home/Alex/shepherd/supervisord/log/roscore-stderr.log
stdout_logfile /home/Alex/shepherd/supervisord/log/roscore-stdout.log[program:slam]
command/home/Alex/shepherd/supervisord/startup/rosl_slam -start-foreground
autostarttrue
stopsignalTERM
stopasgrouptrue
stderr_logfile /home/Alex/shepherd/supervisord/log/slam-stderr.log
stdout_logfile /home/Alex/shepherd/supervisord/log/slam-stdout.log[program:sensor]
command/home/Alex/shepherd/supervisord/startup/rosl_sensor -start-foreground
autostarttrue
stopsignalTERM
stopasgrouptrue
stderr_logfile /home/Alex/shepherd/supervisord/log/sensor-stderr.log
stdout_logfile /home/Alex/shepherd/supervisord/log/sensor-stdout.log
自定义程序的启动脚本 以下文件需要 chmod x 权限
a. startup/rosl_sensor
#!/bin/bashsudo chmod 777 /dev/spidev3.0
source /opt/ros/noetic/setup.bash
cd /home/Alex/shepherd/fays_inside_out_sensor_bringup
source /home/Alex/shepherd/fays_inside_out_sensor_bringup/ROS/devel/setup.bash
export ROS_HOME/home/Alex/.ros
rosrun vi_driver vi_publisher 61
PID$!
wait $PID在shell脚本中想要免密sudo可以sudo visudo追加一行:
YOUR_USERNAME ALL(ALL) NOPASSWD: /bin/chmodb. startup/rosl_slam
#!/bin/bashsource /opt/ros/noetic/setup.bash
source /home/Alex/shepherd/vinsfusion_ws/devel/setup.bash
export ROS_HOME/home/Alex/.ros
rosrun vins vins_node /home/Alex/shepherd/vinsfusion_ws/src/VINS-Fusion/config/OV9281_ICM42688_2_2/stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node /home/Alex/shepherd/vinsfusion_ws/src/VINS-Fusion/config/OV9281_ICM42688_2_2/stereo_imu_config.yaml
PID$!
wait $PIDc. startup/rosl_roscore
#!/bin/bashsource /opt/ros/noetic/setup.bash
# source /home/griz/panther_ws/devel/setup.bash
export ROS_HOME/home/Alex/.ros
roscore
PID$!
wait $PID