how to use systemctl on linux(debian)

本文总结了Systemd的常用命令及用法,包括设置启动级别、管理服务的启动与停止、查询服务状态等。适用于希望了解如何高效使用Systemd进行系统服务管理的读者。

最近开始使用systemd,相比于以往使用service命令,或者直接修改/etc/init.d,或者chkconfig这样多种工具搭配来完成一个系统服务的配置,部署,systemd的野心极大,它要让一切都回归统一,redhat系已经将systemd作为了其默认的系统服务管理工具。

这篇文章记录了一些systemd常用的用法,大都是我自己会用到的。

  1. 启动级别配置由于工作需要,常常会在虚拟机中安装各类linux系统,而绝大部分时间,我们需要的只是一个文字界面,能够通过host ssh到VM中,图形界面没必要起着,白白浪费cpu和内存,通过systemctl命令配置默认进入文字界面,只需一行:

    systemctl set-default multi-user.target

    如果要切回图形界面,相应地:

    systemctl set-default graphical.target

  2. 开机启动服务

    systemctl enable ***.service

  3. 停止开机启动服务

    systemctl disable ***.service

  4. 启动/停止/重启服务

    systemctl start/stop/restart ***.service

  5. 查询服务状态

    systemctl status ***.service

  6. 在远程机器上执行命令,类似ssh user@host ""

    systemctl -H user@hostname

  7. 列出系统服务,-t后用tab键可以关联出所有支持的unit类型

    systemctl -t service

  8. 列出所有已经加载的units的状态

    systemctl -a

  9. 列出加载的units/sockets/timers

    systemctl list-units [pattern]
    systemctl list-sockets [pattern]
    systemctl list-timers [pattern]

  10. 查询某项服务是否active,以sshd.serice为例

    systemctl is-active sshd.service

  11. 直接查看某项服务的配置文件,以sshd.serice为例

    systemctl cat sshd.service

  12. 查看服务的依赖关系,以sshd.serice为例

    systemctl list-dependencies sshd.service

  13. 查看环境变量

    systemctl show-environment


systemctl 还能实习非常之多的系统管理配置功能,不在这一一列举了。
关于systemd的背景,还有它在社区引起一些有意思的争论,甚至导致了debian的分裂,可以看看
why systemd?
upstart or systemd
Posittions forming in the Debian init system discuession

`uni-upgrade-center` 是 DCloud 提供的一个用于 **uni-app 应用升级管理** 的插件,主要用于在 App(尤其是使用 uni-app 开发的混合应用)中实现版本检测、热更新(资源包更新)、整包升级提示等功能。 其中 `min_uni_version` 是该升级中心配置中的一个关键字段,用于指定当前发布的资源包所依赖的 **最低 uni-app 引擎版本**。 --- ### ✅ 什么是 `min_uni_version`? `min_uni_version` 表示:**此更新包(如 wgt 热更新包)运行所需的最低 uni-app 原生引擎版本号**。如果用户的客户端内置的引擎版本低于这个值,则不能应用此次更新,必须强制整包升级(下载新的 APK/IPA)。 > 它的作用是确保新发布的代码(比如使用了新的 API 或框架特性)不会在旧版运行环境中崩溃。 --- ### 📁 配置位置 通常在 `manifest.json` 或升级服务器返回的升级信息 JSON 中出现: ```json { "version": "1.0.1", "name": "主功能优化", "min_uni_version": "3.0.0", "upgrade_url": "https://example.com/app-update.wgt" } ``` 或者在 `uni-upgrade-center` 插件的服务端配置中: ```json { "android": { "url": "https://yourdomain.com/update/android.wgt", "version": "1.0.1", "min_uni_version": "3.0.0", "description": "修复若干问题" } } ``` --- ### 🔧 工作机制说明 当客户端请求检查更新时: 1. 客户端上报当前设备信息,包括: - 当前 App 版本 - 当前 `uni-app` 引擎版本(可通过 `uni.getSystemInfoSync().appVersion` 或内部变量获取) 2. 升级服务器返回更新信息,包含 `min_uni_version` 3. 客户端对比本地引擎版本 与 `min_uni_version`: - 如果 `本地版本 < min_uni_version` → 必须整包升级(无法热更新) - 否则 → 可以安全地进行热更新(wgt 更新) --- ### 💡 示例代码:如何在 uni-app 中处理升级逻辑(配合 uni-upgrade-center) #### 1. 安装插件(HBuilderX 中) 通过 HBuilderX 的插件市场安装 [`uni-upgrade-center`](https://ext.dcloud.net.cn/plugin?id=1857) #### 2. 调用检查更新 ```javascript // 使用 uni-upgrade-center 检查更新 const upgradeCenter = uni.requireNativePlugin('UniUpgradeCenter'); uni.checkUpdate({ success: (res) => { if (res.update && res.version) { // 获取服务器返回的信息 const serverMinUniVersion = res.min_uni_version; // 如 "3.0.0" const currentEngineVersion = getApp().$scope.__uniConfig?.uniVersion || '2.9.9'; console.log('当前引擎版本:', currentEngineVersion); console.log('所需最低引擎版本:', serverMinUniVersion); if (this.compareVersion(currentEngineVersion, serverMinUniVersion) < 0) { // 当前客户端太老,必须去应用市场升级 uni.showModal({ title: '需要更新', content: '您的应用版本过旧,请下载最新版本。', showCancel: false, success: () => { // 跳转到应用市场或下载页面 plus.runtime.openURL('https://yourdomain.com/download'); } }); } else { // 可以热更新 uni.downloadFile({ url: res.updateUrl, success: (downloadRes) => { if (downloadRes.statusCode === 200) { upgradeCenter.installUpdate(downloadRes.tempFilePath); } } }); } } else { uni.showToast({ title: '已是最新版本', icon: 'none' }); } }, fail: (err) => { console.error('检查更新失败', err); } }); ``` #### 3. 版本比较工具函数 ```javascript compareVersion(v1, v2) { const a = v1.split('.').map(Number); const b = v2.split('.').map(Number); for (let i = 0; i < Math.max(a.length, b.length); i++) { const num1 = i < a.length ? a[i] : 0; const num2 = i < b.length ? b[i] : 0; if (num1 > num2) return 1; if (num1 < num2) return -1; } return 0; } ``` --- ### ⚠️ 注意事项 | 项目 | 说明 | |------|------| | `min_uni_version` 来源 | HBuilderX 构建时根据底层 SDK 自动生成,可在离线打包或云打包日志中查看 | | 修改时机 | 每次你使用了新版本才支持的功能(如新增 JSAPI、组件等),应提高此值 | | 用户影响 | 若设置过高,老用户无法热更新,只能重装 App | --- ### ❓ 如何查看当前 Appuni-app 引擎版本? ```javascript const info = uni.getSystemInfoSync(); console.log(info.appVersion); // 输出类似 "3.0.0" 或 "HBuilder X 3.0.0" ``` 或者在原生插件中调用: ```js const version = plus.runtime.version; console.log(version); // H5+ 运行环境版本 ``` --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值