Ubuntu上runit安装及使用教程

前言

runit是一个用于服务监控的UNIX软件,它提供以下两种服务:

  • 当服务器启动的时候启动定义好的服务。
  • 监控运行的服务,当服务发生意外中断的时候,自动重启服务。

这篇教程将通过一个简单的示例来讲解如何创建新的runit服务。如果你想了解更多信息,可以查看runit的官方文档。
本篇教程包括以下三部分:

  1. 创建一个runit模板
  2. 创建第一个服务
  3. 如何自动管理服务

1、搭建环境

runit软件包不提供开箱即用的systemd单位文件。但是有一个特殊的软件包可以提供它:runit-systemd。

只需安装此软件包,runit即可完成工作。

sudo apt install runit-systemd

运行如下命令来检查是否已经安装了runit并且系统已经运行了runit。

ps -ef | grep runsvdir

输出结果如下:

root       793     1  0 16:03 ?        00:00:00 runsvdir -P /etc/service log: ...........................................................................................................................................................................................................................................................................................................................................................................................................

runsvdir其实是一套组件,这些组件可以满足用户的各种需求,核心组件包括了runsvdir,runsv, chpst,svlogd以及sv。

2、创建模版

注意输出结果中的runsvdir -P /etc/service log:......., 它的意思是runsvdir会监控/etc/service/目录下的文件,这些文件用于配置被监控的服务。
被监控的服务是通过在/etc/service目录下创建子目录,并添加可执行脚本run来实现的。
当runsvdir发现新的配置文件时,它就会自动启动一个runsv进程来管理这个配置的服务。
runit的设计思想就是每个组件的功能是完全独立的,以便管理。可以使用man命令查看具体组件的用法:

man runsvdir

确保存在```/etc/service`目录,如果不存在,则使用mkdir创建相应目录:

mkdir /etc/service

为了便于开发与测试,这里我们不直接在/etc/service/目录中添加配置文件,而是创建一个暂存的目录来放置配置文件。
当我们满意自己的测试之后,再使用软链接,将暂存目录链接到/etc/service

创建/etc/runit作为暂存目录。

mkdir  /etc/runit

在创建一个真正的runit服务之前,我们先创建一个模板。这个模板将展示runit的基本用法,以后可以直接使用这个模板创建新的服务。
首先创建template目录:

sudo mkdir /etc/runit/template

接下来,创建run脚本:

#!/bin/sh -e
exec 2>&1
exec chpst -u USER COMMAND

给run添加可执行权限:

chmod +x /etc/runit/template/run

这个脚本首先将标准错误输出流输出到标准输出流,然后执行chpst命令。chpst命令用来指定使用哪个用户执行命令。由于run脚本默认被root用户执行,通过chpst可以将run配置为普通用户来执行。通过man命令可以查看chpst的更多信息。

man chpst

当runsvdir检查到/etc/service目录下包含一个新的目录时,runsvdir会启动一个runsv进程来执行和监控run脚本。通过man命令查看runsv的更多信息:

man runsv

你可能注意runsv还可以监控日志服务,日志在应用中非常的重要。下面创建一个日志模板。
首先创建log目录:

mkdir /etc/runit/template/log

然后创建run脚本:

#!/bin/sh
exec chpst -u USER svlogd -tt LOGDIR

给run脚本添加可执行权限:

chmod +x /etc/runit/template/log/run

上面的脚本使用chpst启动一个svlogd守护进程,该进程将日志信息写到LOGDIR目录中。
使用man命令获取更多关于svlodg的信息:

man svlogd

当runsvdir在/etc/service/目录中发现新的配置时,它会继续查找子目录log,如果找到了则启动runsv进程来执行和监控log目录下的run脚本。

3、服务示例

接下来,我们使用上面创建的模板来创建一个简单的服务配置。首先创建需要再run脚本中被chpst使用的用户:

adduser cmcm

接下来创建放置服务配置的目录,并将它的所属用户与用户组设置为cmcm。

mkdir /opt/example
chown foo:foo /opt/example

接下来切换到cmcm用户:

su cmcm

/opt/example目录中添加脚本foo-service.sh:

#!/bin/bash

echo "Started service..."

for i in {1..30}
do
   echo "Doing stuff..."
   sleep 1
done

echo "Oh no I crashed..." >&2
exit 1

给脚本赋予执行权限:

chmod +x /opt/example/foo-service.sh

上面的脚本模拟了一个真实的应用,每隔1秒打印一次日志信息,最后打印一次错误信息。可以尝试执行这个脚本:

/opt/example/foo-service.sh

接下来创建包含日志服务的目录:

mkdir /opt/example/logs

再切换回root用户。

exit

接下来使用之前创建的模板来监控这个示例服务,将暂存目录中的模板文件拷贝至新的目录example:

cp -R /etc/runit/template /etc/runit/example

更新/etc/runit/example/run脚本的内容,使用foo用户来执行foo-service.sh脚本。

#!/bin/sh -e
exec 2>&1
exec chpst -u cmcm /opt/example/foo-service.sh

同样的,更新/etc/runit/example/log/run脚本内容:

#!/bin/sh
exec chpst -u cmcm svlogd -tt /opt/example/logs

在将服务部署到/etc/service前,首先测试下配置是否正确:

/etc/runit/example/run

如果脚本运行正常,就可以部署服务了,创建一个软链接:

ln -s /etc/runit/example /etc/service/example

不出意外的话,runsvdir会检测到我们配置的两个服务,然后启动两个runsv进程来执行并监控服务。通过下面的命令可以检测服务是否正常运行。

sv status example

输出结果如下所示:

run: example: (pid 1322) 10s; run: log: (pid 1285) 40s

使用tail命令可以查看日志信息:

tail -f /opt/example/logs/current

你会看到日志信息以及异常信息,接着服务重启。

4、管理服务

最后,我们再来学习下sv用法,sv用来手动管理我们的服务。
(1)检查服务状态

sv status example

(2)停止服务

sv stop example

停止服务之后不会再输出日志信息,也不会再自动重启。
(3)重启服务

sv restart example

(4)更多用法

man sv
<think> 我们参考用户提供的引用内容,特别是引用[1]和引用[2](因为引用[1]提供了在Ubuntu 22.04安装CVAT和SAM的步骤,引用[2]则提供了一个Dockerfile示例,其中包含一些依赖安装,但用户主要需求是CVAT安装)。同时,引用[3]、[4]、[5]提供了一些相关的系统配置知识,但并非直接针对CVAT安装。 根据引用[1],CVAT的安装步骤如下: 1. 安装Docker和Docker Compose 2. 克隆CVAT仓库 3. 构建并启动CVAT容器 注意:引用[1]中提到“局域网使用”,但未给出具体说明,我们按照标准流程进行。 由于CVAT是一个基于Docker的应用程序,因此我们重点需要配置好Docker环境。 步骤详细说明: ### 1. 安装Docker和Docker Compose 按照引用[1]中的命令,但注意其中有些命令可能需要根据实际情况调整(比如国内可能需要更换镜像源)。这里按照官方步骤: ```bash # 更新软件包索引 sudo apt-get update # 安装必要的包以允许apt通过HTTPS使用仓库 sudo apt-get --no-install-recommends install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # 添加Docker的官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker仓库 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" # 再次更新 sudo apt-get update # 安装Docker引擎、CLI和容器运行时 sudo apt-get --no-install-recommends install -y \ docker-ce docker-ce-cli containerd.io # 安装Docker Compose插件(注意:这里安装的是Docker Compose V2,使用命令为docker compose) sudo apt-get install -y docker-compose-plugin ``` 验证Docker安装: ```bash sudo docker run hello-world ``` ### 2. 安装CVAT #### 2.1 克隆CVAT代码库 ```bash git clone https://github.com/cvat-ai/cvat cd cvat ``` #### 2.2 构建并启动CVAT容器 使用Docker Compose启动服务: ```bash docker compose up -d ``` 这个过程会下载所有必要的镜像并启动容器。第一次运行可能需要一些时间。 #### 2.3 创建超级用户 CVAT需要创建一个超级用户来访问Web界面: ```bash docker compose exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser' ``` 按照提示输入用户名、邮箱和密码。 ### 3. 访问CVAT 在浏览器中访问:`http://localhost:8080`,使用上一步创建的用户名和密码登录。 ### 4. 关闭和清理 停止CVAT服务(在cvat目录下): ```bash docker compose down ``` ### 注意事项: - 如果需要使用GPU加速(例如用于SAM等模型),需要安装NVIDIA Docker Toolkit,并修改docker-compose.yml文件,为相应的服务添加GPU支持。 - 引用[1]中提到“局域网使用”,如果需要从同一局域网的其他机器访问,需要确保防火墙允许8080端口,并且启动时可能需要将`cvat`服务中的`ports`部分设置为`0.0.0.0:8080:8080`(默认已经是这样)。 - 引用[5]中关于网络端口的检查命令(`sudo ss -tuln | grep 8080`)可以用来检查端口是否监听。 ### 5. 使用教程 安装完成后,可以通过以下步骤使用CVAT: 1. 登录后,点击“创建新任务”按钮。 2. 填写任务名称,选择项目(可选)并添加标签(即要标注的类别)。 3. 上传数据:可以选择本地文件、远程URL或者服务器上的文件(需提前通过Share功能上传)。 4. 设置任务完成后,点击“提交”并打开任务。 5. 在标注界面,可以使用各种工具(如矩形框、多边形、点等)进行标注。 6. 标注完成后,可以导出为多种格式(COCO、YOLO、Pascal VOC等)。 如果需要更详细的使用教程,可以参考CVAT官方文档:https://opencv.github.io/cvat/docs ### 相关问题 1. 如何在CVAT中创建和管理项目? 2. CVAT支持哪些标注任务类型? 3. 如何在CVAT中使用自动标注(如SAM)? 4. 如何配置CVAT以使用GPU加速? 5. CVAT如何实现团队协作? </think> ### Ubuntu 22.04 下 CVAT 的安装使用教程 #### 一、安装准备 1. **系统更新** 确保系统最新: ```bash sudo apt update && sudo apt upgrade -y ``` 2. **安装 Docker & Docker Compose** ⚙️ 按官方步骤安装(引用[1]): ```bash sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` **验证安装**: ```bash sudo docker run hello-world # 显示欢迎信息即成功 ``` #### 二、安装 CVAT 1. **克隆仓库** ```bash git clone https://github.com/cvat-ai/cvat cd cvat ``` 2. **启动 CVAT 服务** 构建并启动容器(首次运行需下载约 3GB 镜像): ```bash docker compose up -d ``` **关键过程监控**: ```bash docker compose logs -f # 实时查看日志 ``` 3. **创建管理员账户** ```bash docker compose exec cvat_server python manage.py createsuperuser ``` ▶ 按提示设置用户名/邮箱/密码(用于 Web 登录) #### 三、访问与配置 1. **访问 Web 界面** 浏览器打开: `http://localhost:8080` 👉 使用刚创建的管理员账号登录 2. **局域网访问配置**(引用[1]) 修改 `docker-compose.yml`: ```yaml services: cvat: ports: - "192.168.1.100:8080:8080" # 替换为你的本机IP ``` 重启服务: ```bash docker compose down && docker compose up -d ``` #### 四、基本使用 1. **创建标注任务** - 点击 `Tasks` → `Create new task` - 填写任务名称/标签(如 `car,person`) - 上传图片/视频数据集(支持 ZIP 压缩包) 2. **标注操作** | 工具 | 快捷键 | 功能 | |---------------|--------|--------------------| | 矩形框 | `R` | 物体检测标注 | | 多边形 | `P` | 分割标注 | | 跟踪模式 | `T` | 视频物体跟踪 | | 保存 | `Ctrl+S` | 保存当前标注 | 3. **导出标注结果** - 任务页 → `Actions` → `Export dataset` - 支持格式:COCO、YOLO、Pascal VOC 等 #### 五、常见问题解决 1. **端口冲突**(引用[5]) 检查端口占用: ```bash sudo ss -tuln | grep 8080 # 查看8080端口状态 ``` 2. **GPU 加速配置**(引用[2]) 需先安装 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html),然后在 `docker-compose.yml` 添加: ```yaml services: cvat: deploy: resources: reservations: devices: - driver: nvidia count: 1 ``` 3. **OpenCV 依赖问题**(引用[3]) 容器内安装缺失库: ```bash docker compose exec cvat_server apt update docker compose exec cvat_server apt install -y libgl1 libgtk-3-dev ``` > 💡 **提示**:完整文档参考 [CVAT 官方指南](https://opencv.github.io/cvat/docs) --- ### 相关问题 1. 如何为 CVAT 配置 HTTPS 安全访问? 2. CVAT 如何集成 SAM 等 AI 辅助标注模型? 3. 在多用户协作场景下如何管理 CVAT 权限? 4. CVAT 与 LabelImg/LabelMe 等其他标注工具有何区别? [^1]: CVAT 局域网访问配置指南 [^2]: NVIDIA Docker 加速配置示例 [^3]: OpenCV 依赖问题解决方案 [^5]: Ubuntu 网络与权限管理技巧
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值