Hero Image
升级OPENSUSE LEAP

openSUSE Leap 15.2自2022年1月4日起已结束生命周(EOL),还在使用该系统的用户未来将不会再收到任何形式的安全与维护更新。 建议所有用户尽快将系统升级到 - openSUSE Leap 15.3,该系统将获得安全补丁和更新直至2022年11月。下一个版本openSUSE Leap 15.4也将预计在2022年6月发布。 喜欢滚动更新版的的朋友,也可以借此机会从Leap版本切换到Tumbleweed版本。 openSUSE Leap的版本升级可以通过联网在线升级,也可以通过下载最新版本的ISO文件进行线下升级,这里面我们将看看如何在线升级。 openSUSE Leap在线升级 使用在线升级的方式有如下优势: 只需要下载需要更新的软件包,将节省不少带宽 在升级期间,虽然不推荐,但是你任然可以使用系统,只有在升级完成后需要重新启动 因为不需要下载ISO镜像文件,所以不需要DVD驱动器或者刻录USB启动盘,需要的仅仅是网络 当然在线升级也有如下缺点: 如果由于某些原因,导致升级过程被中断(例如突然断电,网络连接断开),升级进程无法继续,这有可能会留下一个被破坏的系统 如果有多个系统需要升级,那么下载ISO镜像可能会更省带宽 注意,如果你使用的是更旧的Leap版本,例如 15.1,请先升级到15.2之后,再升级到15.3 。 你可以使用如下命令查看当前版本 > lsb_release -d Description: openSUSE Leap 15.2 虽然正常的升级不会导致用户数据的丢失,但是为了安全,建议在升级之前备份自己重要的个人数据。 升级系统之前的准备 首先检查更新源是否存在并更新当前发行版本的软件包 # zypper repos --uri ... 29 | repo-update | 主更新源 | Yes | ( ) No | No | https://mirrors.tuna.tsinghua.edu.cn/opensuse/update/leap/15.2/oss/ 30 | repo-update-non-oss | 主更新源(非开源软件) | Yes | ( ) No | No | https://mirrors.

Hero Image
SYSTEMD定时服务

我上一篇文章中介绍的locate文件查找命令,需要依赖updatedb更新索引才能快速查找文件,因此需要定时运行该命令来更新文件索引。我们知道在Linux和类Unix系统上通常使用crontab来创建定时任务。 在Ubuntu上我们使用apt install mlocate之后,会安装一个脚本文件到 /etc/cron.daily/mlocate,也就是通过Cron机制来每天执行updatedb。然而在我的openSUSE上却并未发现有相关的Crontab配置,但我发现索引文件还是在每天的零点进行了更新,那这个定时任务是谁来执行的呢? 我通过查找与mlocate相关的文件,发现了以下几个文件: ❯ locate "mlocate" /etc/systemd/system/timers.target.wants/mlocate.timer /usr/lib/systemd/system/mlocate.service /usr/lib/systemd/system/mlocate.timer 原来在openSUSE系统上,使用的是Systemd的定时单元来实现的。Systemd是一种Linux系统服务管理程序,在我之前的文章在OPENSUSE上使用SYSTEMCTL管理系统服务中介绍过。 那这里我们将重点介绍下Systemd的定时服务(systemd timer unit)。 systemd定时单元 类似与Cron,systemd的定时单元在Linux系统上提供了机制来调度任务,相比于Cron机制,其他具有以下特性(在使用systemd作为初始化和服务管理的系统上): 调度的任务可以依赖于其他systemd服务 可以使用systemctl命令来管理定时单元,类似与管理systemd服务 除了类似Cron的循环实时定时任务(realtime)之外,还支持一种基于非时间事件触发的任务(monotonic) 定时单元记录日志到systemd的日志系统(journal),因此方便于统一监控和诊断 systemd定时任务的类型 上面的特性中,我们提到其支持两种类型 - realtime 和 monotonic Realtime - 类似于Cron,这种类型的定时任务由定义的绝对时间来触发,在配置文件中通过 OnCalendar 选项来定义 Monotonic - 这种类型的定时任务将会在指定的事件(例如系统启动,服务激活)一定时间后触发,在配置文件中通过 OnBootSec 和 OnUnitActiveSec ,OnStartupSec 等选项来定义,并且该类型的定时任务触发时间不是固定的,在每一次系统重启之后都会被重置 systemd定时任务的配置 在文章开始,我们在寻找mlocate更新文件索引的定时任务时看到,有文件 /usr/lib/systemd/system/mlocate.timer ,没错,就是通过以 .timer 作为扩展名的systemd单元文件来定义systemd的定时单元的 [Unit] Description=Daily locate database update Documentation=man:updatedb [Timer] OnCalendar=daily AccuracySec=12h Unit=mlocate.service Persistent=true [Install] WantedBy=timers.target 可以看到文件格式与systemd服务的单元文件类似,不过需要 [Timer] 段,在该段定义了如下选项 OnCalendar=daily,意思是每天触发 AccuracySec=12h,意思是由于某些原因需要推测执行的时间 Unit=mlocate.service,这里就是指定了需要执行的任务服务 Persistent=true,指定如果由于关机等原因到时了为能执行任务的情况下,启动会立即触发该任务 那该定时单元指定了 mlocate.service 作为触发执行的任务,也就是 /usr/lib/systemd/system/mlocate.

Hero Image
在LINUX上配置WIREGUARD

什么是 WireGuard ? 其官方宣称是快速、现代以及安全的VPN隧道(Fast, Modern, Secure VPN Tunnel)。 WireGuard使用了最先进的加密技术,相比 IPSec 更简单更精简,而且拥有几乎超越 OpenVPN 的性能。其最初是针对Linux内核发布的,但是现在已经跨平台(Windows, MacOS, BSD, Android, iOS等)可部署。 接下来这篇How To系列文章,就来一步步在Ubuntu (Linux)上安装和配置WireGuard VPN,其中一台云主机运行Ubuntu-20.04用作VPN服务器,另一台本地的linux桌面环境作为VPN客户端。 服务器端安装WireGuard 这里我们的服务器使用的是操作系统为Ubuntu 20.04的云主机,对于如何创建并配置一台云主机,可以选择 [DigitalOcean](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04)。 这里我们我们已经配置好一台Ubuntu 20.04的云主机,并且可以通过SSH访问。首先对系统进行安全更新 $ sudo apt update $ sudo apt upgrade 接下来直接使用APT安装WireGuard软件包 $ sudo apt install wireguard 会同时安装 wireguard-tools 软件包,我们需要使用其工具进行相关的配置。 配置WireGuard服务端 进入root权限进行操作,为服务端生产私有/公共密钥对 $ sudo -i \# cd /etc/wireguard/ \# umask 077 \# wg genkey | tee privatekey | wg pubkey > publickey 执行完上述命令后,我们会在目录 /etc/wireguard/ 下生产两个密钥文件 privatekey 和 publickey 。

Hero Image
SYSTEMCTL管理系统服务

这是我在使用openSuSE过程中学习和使用systemd来管理系统的一些笔记。 首先那就让我们来先看看什么是systemd: Systemd Systemd是Linux下的一个程序,用来初始化系统。像SysV一样,其将会被Linux内核启动。 在opneSuSE上,systemd将会是系统进程号为1的进程,其负责初始化系统和启动系统服务。 openSuSE从12.3版本开始,用systemd作为默认的系统初始化程序代替了SysV。 想了解systemd和SysV的对于,可以参看这里。 用sytemctl进行系统管理 systemd提供了systemctl命令来进行系统服务管理,其调用格式如下: systemctl [通用选项] 子命令 [子命令选项] 在系统上管理服务 像SysV一样,通过子命令start|stop|restart等来管理服务: systemctl start|stop|status|restart|reload|… <服务名>.service 如查看当前cron服务的状态: # systemctl status cron.service cron.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled) Active: active (running) since Mon 2015-01-26 15:50:21 CST; 3 days ago Main PID: 1247 (cron) CGroup: /system.slice/cron.service └─1247 /usr/sbin/cron -n systemctl支持一次操作多个服务,只要在子命令后添加多个服务名即可。 使用enable|disable来设置开启自动启动或者不启动一个服务: systemctl enable|disable <服务名>.service Systemd的启动目标 在SysV的启动系统上,用启动级别(runlevel)来表示系统的启动状态,已经哪些服务伴随这级别一起启动。 如 0 (关闭系统),3 (多用户带网络),5 (多用户带网络,显示图形用户界面)。 而在Systemd上,用目标(target)表示这个概念,如 graphical.target 提供了多用户带网,显示图像用户界面的启动目标,就相当与level 5。 systemd提供了很多内置的目标单元,可以用下面的命令查看: # systemctl list-unit-files –type=target