menu Chancel's blog
rss_feed
Chancel's blog
有善始者实繁,能克终者盖寡。

Linux

作者:Chancel Yang, 创建:2023-07-25, 字数:18965, 已阅:453, 最后更新:2024-06-07

本文是我多年来使用Linux的经验总结,文章将分成两个部分来介绍,第一部分是命令行界面(CLI),第二部分是桌面环境(KDE Plasma)的使用

本文默认是基于 Ubuntu 20.04 LTSKDE Plasma 5 进行说明,其他发行版和桌面环境可以参考这些用法自行加一些调整

在第一部分,我将分享一些我在终端中常用的命令和技巧,如设置SSH密钥、网络分析、文本处理等

在第二部分,我将介绍一些我喜欢的 KDE Plasma 的特性和定制化选项,包括调整 KDE Plasma 的设置以及一些提高生产力和舒适性都非常有用的插件和扩展

本文将为使用Linux的用户提供一些实用的技巧和惊艳的功能,无论是在CLI还是在桌面端,无论你使用哪个发行版或桌面环境,这些使用都有一定的通用性

1. CLI

1.1. SSH

现在,你在任何云服务的服务商处购买一台服务器,无特别要求,那么连接这台Linux服务器,通常会采用 SSH 的方式

SSH(Secure Shell) 是一种网络协议,用于在不安全的网络上进行安全的远程登录和文件传输

它具备加密通信和身份验证机制,以确保数据传输的机密性和完整性

1.1.1. SSH安全

服务器往往是具备公网访问的主机,如果按照默认设置,很容易被一些恶意软件扫描以及攻击

为了避免这些恶意扫描以及攻击,通常会修改以下三个点:

  1. 更改默认的22连接端口
  2. 禁止Root用户登录
  3. 禁止密码登录(可选)

实现以上3点,编辑:/etc/ssh/sshd_conf

TEXT
...

# 更改默认端口为21093
Port 21093

# 禁止密码登录
PasswordAuthentication no

# 禁止Root用户登录
PermitRootLogin no

如果禁止了密码登录,就需要采用证书登录

编辑:$HOME/.ssh/authorized_keys

并添加我们的公钥,然后设置文件权限为 600

Bash
chmod 600 $HOME/.ssh/authorized_keys

公钥生成请看下一节

最后,重启我们的SSH服务,这样就可以规避大部分SSH登录机器人发起的请求了

Bash
sudo systemctl restart sshd

1.1.2. SSH公钥生成

SSH关闭密码登录之后,就需要采用公钥私钥的方式登录

Windows需要借助其他第三方工具生成密钥

linux系统生成公私钥钥对非常简单,执行命令如下

Bash
ssh-keygen -t rsa

创建时,会询问你是否需要 passphrase ,这是用于使用私钥时,验证密码来二次确保证书没有被盗用

创建后,目录下会出现私钥 id_rsa 文件和公钥 id_rsa.pub 文件

将公钥 id_rsa.pub 内容添加到任意服务器的 $HOME/.ssh/authorized_keys 后,就可以使用id_rsa连接到该服务器

SSH也带有一个小工具方便我们快速的将公钥推送到远程服务器上,如下:

Bash
ssh-copy-id -i id_rsa.pub -p 22 chancel@192.168.1.1

1.2. Shell

在Linux中,shell是一种命令行解释器,它是用户与操作系统之间进行交互的接口

1.2.1. Bash

常见的Linux shell有Bash(Bourne Again Shell)、Csh(C Shell)、Ksh(Korn Shell)等

我们经常执行:bash example.sh ,其实就是用bash去执行example.sh这个脚本,与我们在Windows上双机打开exe的原理类似

同时,Shell还提供了许多功能,如变量定义、条件判断、循环等功能,是一个功能丰富的脚本语言

1.2.2. Zsh

与 sh 和 bash 相比,Zsh 在功能和特性方面更加强大和灵活

它提供了更高级的命令行编辑功能、更丰富的主题和插件支持、更强大的自动补全功能等,不少Linux发行版已经使用ZSH作为默认的Shell程序

提到了 Zsh ,则不得不提到 oh-my-zsh, oh-my-zsh是一个开源的zsh配置管理框架,提供了一系列的优化与增强,例如:

  • 更漂亮的主题
  • 更多的插件支持(语法高亮、自动补全、自动纠错、命令补全等)
  • 更现代化的操作

可以通过 oh-my-zsh 官方的脚本直接安装:

Bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

1.3. 网络命令

1.3.1. 占用端口查找(netstat、ss、lsof、ffuser)

netstatss 是非常常见的端口占用查询方式,以下命令等价

Bash
netstat -tulpn | grep 8080 # 查找占用端口8080的程序
ss -tulpn | grep 8080 # 查找占用端口8080的程序

lsoffuser 是Linux中用于查看打开文件的命令行程序,也可以用于查看端口占用情况

Bash
lsof -i :8080 # 查找占用端口8080的程序
fuser -v 8080/tcp # 查找占用端口8080的程序

1.3.2. 网络探测(nc、telnet)

nc 命令是Linux中非常好用的网络探测器,常用于检查对向端口(tcp/udp)是否开启

Bash
nc -zuv -w 5 114.114.114.114 53 # 查询114.114.114.114服务器的53端口是否接受UDP
nc -ztv -w 5 114.114.114.114 53 # 查询114.114.114.114服务器的53端口是否接受TCP

此外,还可以利用nc来扫描服务器开放端口

Bash
nc -ztv -w 2 114.114.114.114 1-100 # 查询114.114.114.114端口1-100的开放情况(tcp)

telnet 命令是Linux/Windows下都支持的端口连通测试工具

Bash
telnet 114.114.114.114 53

1.3.3. 路由追踪(traceroute)

traceroute 命令用于追查数据包的路由走向,判断两个网络之间的连通情况

Bash
traceroute -q 5 119.29.113.112

常见-q参数用于设置数据包数量,默认是3个数据包

1.4. 文本命令

grep 查找匹配文本,sed 更进一步查找匹配并编辑文本,awk 适合定义复杂处理编辑文本方法

1.4.1. grep

grep 是global regular expression print的缩写,其工作原理是读取每行并与搜索的字符串相匹配输出,支持正则表达式的输出

如常见的查找进程

Bash
❯ ps -ef | grep aria2c
chancel     1715    1358  0  2022 ?        00:00:30 /usr/bin/aria2c --conf=/etc/aria2c/aria2c.conf

对于grep而言,以下列举较为常见的匹配

Bash
# 统计head.js出现的次数
➜ grep -c 'head.js' www.log
449

# 搜索出现head.js的日志文件
➜ grep -l 'head.js' *
blog.log
www.access.log
www.log

# head.js出现的位置上下行展示 -A表示后面内容,-B表示前面内容,-C可代表A+B
➜ grep -A2 -B2 'head.js' www.log
36.235.132.115 - - [03/Jan/2023:08:46:02 +0000] "GET /static/css/mdui.min.css HTTP/1.1" 200 325338 "https://www.chancel.me/sw.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
36.235.132.115 - - [03/Jan/2023:08:46:02 +0000] "GET /static/js/mdui.min.js HTTP/1.1" 200 74021 "https://www.chancel.me/sw.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
36.235.132.115 - - [03/Jan/2023:08:46:02 +0000] "GET /static/js/head.js HTTP/1.1" 200 4602 "https://www.chancel.me/sw.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
36.235.132.115 - - [03/Jan/2023:08:46:02 +0000] "GET /static/icons/material-icons/MaterialIcons-Regular.woff2 HTTP/1.1" 304 0 "https://www.chancel.me/sw.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
36.235.132.115 - - [03/Jan/2023:08:46:02 +0000] "GET /static/fonts/roboto/Roboto-Regular.woff2 HTTP/1.1" 304 0 "https://www.chancel.me/sw.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"

# 正则表达式匹配
➜ grep -E '\?v\=[0-9]+' www.log
...
14.145.137.86 - - [03/Jan/2023:09:08:53 +0000] "GET /static/js/vue.min.js?v=1672489087.0 HTTP/1.1" 304 0 "https://www.chancel.me/articles/71" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
14.145.137.86 - - [03/Jan/2023:09:08:53 +0000] "GET /static/js/mdui.min.js?v=1672489087.0 HTTP/1.1" 304 0 "https://www.chancel.me/articles/71" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
14.145.137.86 - - [03/Jan/2023:09:08:53 +0000] "GET /static/js/head.js?v=1672489087.0 HTTP/1.1" 304 0 "https://www.chancel.me/articles/71" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
14.145.137.86 - - [03/Jan/2023:09:08:53 +0000] "GET /static/fonts/roboto/Roboto-Bold.woff2 HTTP/1.1" 304 0 "https://www.chancel.me/static/css/mdui.min.css?v=1672489087.0" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"

此外,还有以下常见参数

  • -s: 忽略错误信息
  • -i: 忽略大小写

1.4.2. sed

sed 是 stream editor 的缩写,常见的用法是用于搜索替换一行,其形式通常类似于

Bash
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
Bash
# 删除gfwlist文件中的@@和||
➜ sed -i '/^$\|@@/d' gfwlist.txt

1.4.3. awk

awk 是Linux中一个强大的文本处理工具,基于模式匹配来处理数据,以下是常见使用方法

打印 file.txt 的每行第一个字段

Bash
awk '{print $1}' file.txt

打印 file.txt 中所有包含pattern 的行

Bash
awk '/pattern/ {print $0}' file.txt

以逗号作为分隔符,打印 CSV 文件 file.csv 中每行的第一个字段

Bash
awk -F ',' '{print $1}' file.csv

awk 的功能非常强大,适用于各种文本处理任务,通过组合其各种参数和功能,可以实现复杂的数据处理和分析

1.5. 其他命令

1.5.1. du

du 指令用于查看当前文件目录大小,但并不直观,以下列举常规用法

Bash
# 查看整个文件夹大小
du -sh

# 查看文件夹中分布的文件大小
du -hsx *

# 使用排序查看前6个文件夹大小
du -hsx *| sort -rh |

1.5.2. 命令输出

column -t 可以将大部分输出规整为表格形式输出,如下

Bash
mount | column -t

2. 桌面端

2.1. 发行版

Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件

Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件,这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面

本质上,选择发行版,是在选择包管理器与生态环境

包管理器与桌面环境是可更改的,这也更加的复杂

Linux包管理器包括常见的的aptyum/dnf,也有不常见的的ZYppurpmipacman

当一款软件说他支持Linux时,你会发现他通常提供了debrpm

2.1.1. 常见发行版

Debian系发行版,个人认为是个人用户的最佳选择之一

Debian类发行版中最有名气的是Ubuntu系列,Ubuntu是一个非常适合体验Linux桌面发行版的操作系统

常见的Debian系发行版列表如下

名称 特点
Ubuntu 一个非常流行的发行版
Debian 信奉自由软件、由志愿者开发维护
Kubuntu 使用KDE桌面的Ubuntu
Linux Mint 从Ubuntu派生并与Ubuntu兼容的系统
Knoppix 第一个Live CD系统
OpenGEU Ubuntu的派生版
Elementary OS 基于Ubuntu,酷似Mac OS X

除了Debian系的发行版,基于RPM软件包管理器的Red Hat系发行版是国内服务器最为常见的操作系统

阿里云/腾讯云的云操作系统均基于Cent系列

如下是常见的Red Hat系的发行版列表

名称 特点
Red Hat Enterprise Linux Fedora的上游版
openSUSE 由Slackware分离出来的发行版
Fedora Red Hat的社区版
PCLinuxOS Mandriva的派生版本
CentOS 从Red Hat发展而来的发行版,由志愿者维护,提供百分百兼容Red Hat的兼容性
Megeia Mandriva发展而来的系统

除了Debian/Red Hat系列,还有许多优秀的发行版

名称 特点
ArchLinux 一个基于KISS(keep it simple and tupid)的滚动更新发行版
CHakra ArchLinux的KDE桌面版
GENtoo 一个面向高级用户的发行版(需要自动编译)
Slackware 最早的linux发行版之一

选择哪个发行版取决于喜好

2.1.2. 桌面环境

Linux发行版会提供了几款桌面环境供用户选择,如常见的KDE PlasmaGNOMEXFCE等等

即使你选择发行版没有提供你所要的桌面环境,社区也会提供其他版本,例如Budgiei3

我长期使用的桌面环境是 KDE ,尽管我也尝试过GNOME和XFCE,但最终还是回归到了 KDE ,相较于其他桌面环境, KDE 更注重开箱即用的体验,非常适合入门使用

KDE 在稳定性和扩展性方面都有优势,适合广大用户

使用一圈下来,比较主观的体验如下:

  • XFCE:极其稳定以及低资源消耗,删减了动画效果简化了界面,几乎没什么扩展性和自定义性
  • GNOME:恰到好处的简洁风格又保留了必备的功能
  • KDE Plasma:流畅的动画以及丰富的扩展性

接下来的内容将基于 KDE Plasma 5 ,操作系统是 Kubuntu2204 (即 Debian11 + KDE Plasma 5)

2.2. 输入法

大部分Linux发行版都不提供中文输入法,需要自行安装

2.2.1. Fcitx5

Fcitx5 是一个输入法框架,,许多发行版甚至直接就内置了 Fcitx5 ,使用 apt 安装如下

Bash
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk4 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 fcitx5-frontend-qt5 fcitx5-rime

设置开机自动运行 Fcitx5 ,编辑:~/.xprofile

Bash
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx

在 Fcitx5 安装完成后,就可以安装 Rime 输入法了

2.2.2. Rime

Rime是开源的自定义中文输入法,支持自定义词库、导入搜狗的百万词库、导出个人习惯词库以及同步各个PC之间的配置等功能

2.2.2.1. Rime安装

首先,创建 Rime 的文件夹

Bash
mkdir ~/.local/share/fcitx5/rime

配置 Rime ,编辑:~/.local/share/fcitx5/rime/default.custom.yaml

YAML
# default.custom.yaml
# save it to: 
#   ~/.config/share/fcitx5/rime  (linux)
#   ~/Library/Rime       (macos)
#   %APPDATA%\Rime       (windows)

patch:
  schema_list:
    #    - schema: luna_pinyin          # 朙月拼音
        - schema: luna_pinyin_simp     # 朙月拼音 简化字模
    #    - schema: luna_pinyin_tw       # 朙月拼音 臺灣正體模式
    #    - schema: terra_pinyin         # 地球拼音 dì qiú pīn yīn
    #    - schema: bopomofo             # 注音
    #    - schema: bopomofo_tw          # 注音 臺灣正體模式
    #    - schema: jyutping             # 粵拼
    #    - schema: cangjie5             # 倉頡五代
    #    - schema: cangjie5_express     # 倉頡 快打模式
    #    - schema: quick5               # 速成
    #    - schema: wubi86               # 五笔86
    #    - schema: wubi_pinyin          # 五笔拼音混合輸入
    #    - schema: double_pinyin        # 自然碼雙拼
    #    - schema: double_pinyin_mspy   # 微軟雙拼
    #    - schema: double_pinyin_abc    # 智能ABC雙拼
    #    - schema: double_pinyin_flypy  # 小鶴雙拼
    #    - schema: wugniu        # 吳語上海話(新派)
    #    - schema: wugniu_lopha  # 吳語上海話(老派)
    #    - schema: sampheng      # 中古漢語三拼
    #    - schema: zyenpheng     # 中古漢語全拼
    #    - schema: ipa_xsampa    # X-SAMPA 國際音標
    #    - schema: emoji         # emoji表情
    # # # "translator/dictionary": luna_pinyin.extended

注销当前登录后重新加载 KDE ,在终端中输入命令打开配置工具

Bash
fcitx5-configtool

在界面中配置输入方式,添加rime输入法

2.2.2.2. Rime词库

这里推荐2个Wiki的词库,非常全面

在页面中选择Release并下载 yaml 格式词典文件(YAML格式),把下载的词典移动到存放 Rime 默认配置的文件夹

Bash
mv moegirl.dict.yaml ~/.local/share/fcitx5/rime/
mv zhwiki.dict.yaml ~/.local/share/fcitx5/rime/

接着创建导入词库的配置文件:~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml

INI
patch:
    "translator/dictionary": extended # 指向当前目录的extended.dict.yaml配置文件

创建扩展词库的配置文件:~/.local/share/fcitx5/rime/extended.dict.yaml

INI
name: extended
version: "2021.02.19"
sort: by_weight
use_preset_vocabulary: true
import_tables:
  - luna_pinyin
  # 此处对应2个词典的文件名(不包含dict.yaml)
  - zhwiki
  - moegirl

如何验证词库加载成功?打个“刘畊宏”试试看能不能匹配出来

2.2.2.3. Rime输入法皮肤

Github仓库:https://github.com/thep0y/fcitx5-themes.git

安装如下:

Bash
git clone https://github.com/thep0y/fcitx5-themes.git
cp -r fcitx5-themes/spring ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/summer ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/autumn ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/winter ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/green ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/transparent-green ~/.local/share/fcitx5/themes
rm -rf fcitx5-themes

创建皮肤的配置文件,编辑:~/.config/fcitx5/conf/classicui.conf

Bash
Vertical Candidate List=False # 关闭垂直候选列表
PerScreenDPI=True # 根据屏幕DPI调整后选词大小
Font="Smartisan Compact CNS 13"
Theme=spring

在托盘区域,找到输入法图标并右键重启 Fcitx5 ,看安装是否成功

2.2.2.4. Fcitx5问题

问题1:第三方软件无法正常使用输入法?

请确认是否已安装了 fcitx5-qt

问题2:系统软件无法正常使用输入法?

使用 fcitx5-diagnose 程序检查fcitx5环境配置是否正常

2.3. Chrome/Chromium

Chrome有官方 deb 包,可以访问 https://www.google.com/intl/en_us/chrome/ 进行下载

在下载deb包后,使用apt进行安装

Bash
sudo apt install ./google-chrome-stable_current_amd64.deb

2.4. 虚拟机KVM

在Linux下,对虚拟化支持的比较好的有 KVM、VirtualBOX、Xen、LXC/LXD、VMware Workstation、QEMU

比较推荐 KVM ,界面操作简单,有其他虚拟软件经验可以零成本上手

在安装前,先检查硬件的支持情况,执行结果大于0说明支持虚拟化

Bash
egrep -c '(vmx|svm)' /proc/cpuinfo

安装KVM以及相关依赖项

Bash
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

启用 KVM 的后台服务

Bash
# 开机启动服务
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
# 开启默认网络服务
sudo virsh net-start default
sudo virsh net-autostart default

# 添加你的用户到 libvirt 组,以便你可以运行虚拟机
sudo adduser `id -un` libvirt

在应用程序中搜索 vm 找到 Virtual Machine Manager 启动

接下来就是全傻瓜式新建-配置-启动虚拟机了

2.5. freerdp

Windows自带RDP协议远程即 mstsc 程序,在Linux上有支持RDP协议的客户端,大部分都基于FreeRDP程序实现的

安装 freerdp 程序

Bash
sudo apt install freerdp

举例:远程一台 192.168.1.100 的Windows PC,映射本地文件夹 /mnt/sda ,并接收远程音频,设定分辨率大小1080P

Bash
xfreerdp /v:192.168.1.100 /u:chancel /size:1920x1080 /drive:/mnt/sda,SDA /audio-mode:0

如果觉得命令行远程较为麻烦,也有很多第三方GUI客户端,推荐 FreeRDP 项目的Remmina客户端

Remmina支持主流的远程协议包括 RDP、VNC、SSH、SFTP,除此之外,详尽的属性配置还能高度自定义化远程细节,如图

这是Linux下最优秀的远程工具,安装方式较为简单,Ubuntu/Arch 都可以直接使用包管理器安装

Remmina要使用RDP协议必须安装freerdp

其他发行版可以自行参考Github上remmina项目安装说明进行安装

Bash
sudo apt install remmina

2.6. 截图和录屏

截图软件推荐 Flameshot ,Flameshot 是一款支持 Windows/Linux/MacOS 的开源屏幕截图和标注工具

安装方法如下

Bash
sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install -y flameshot

在桌面程序中选择 flameshot 启动,然后设置为开机自启,快捷键和截图输出目录也可以在设置中一并设置

录屏软件推荐 Peek , Peek 是一款支持 Linux 的开源录屏软件

安装方法如下

Bash
sudo apt install peek

2.7. Visual Studio Code

Visual Studio Code是微软旗下的轻量级IDE

下载地址:https://code.visualstudio.com/

下载后,使用 apt 进行安装

Bash
sudo apt install ./code_1.82.2_amd64.deb

2.8. DBeaver

DBeaver 是一款开源的数据库管理工具,支持 MySQL、PostgreSQL、Oracle、SQLite、SQL Server 等,界面如下

安装方法:

Bash
wget -O - https://dbeaver.io/debs/dbeaver.gpg.key | sudo apt-key add -\necho "deb https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt install dbeaver-ce

其他操作系统可以参考:

2.9. Docker

Docker 是一种开源的容器化平台,官方仓库已经收录 Docker 以及 Docker Compose

安装如下:

Bash
sudo apt install docker.io
sudo systemctl start docker.service
sudo systemctl enbale docker.service
sudo docker login

试着运行一个测试镜像

Bash
sudo docker run hello-world

2.10. 系统小工具

2.10.1. 进程监控

top 是Linux自带的系统监控,如下

top 是比较简单的,更推荐使用 htopbtop

htop 如下

btop 如下

安装方法

Bash
sudo apt install htop btop

2.10.2. 磁盘占用分析

baobab 是一款开源的磁盘使用情况分析工具

安装如下

Bash
sudo apt install baobab

效果如图

2.10.3. 网络工具

下面是Linux中常见的网络工具合集

Bash
sudo apt install net-tools dnsutils iptraf-ng mtr proxychains

上述软件包作用如下:

  • net-tools:这个工具包提供了一些传统的网络工具,如 ifconfig 、 netstat 、 route 等,它们用于配置网络接口、查看网络连接和路由表等操作
  • dnsutils:这个工具包包含了一些用于进行DNS(域名系统)解析和查询的工具,如 nslookup 、 dig 等。它们可以帮助你检查和调试域名解析问题,获取有关域名的信息
  • iptraf-ng:这是一个网络流量监控工具,可以实时监视网络接口的流量、连接数和数据包统计等。它提供了一个可视化的界面,让你可以更好地了解和管理网络流量
  • mtr:这个工具是一种网络诊断工具,结合了ping和traceroute的功能。它可以显示到目标主机的网络延迟(ping)和路径(traceroute),帮助你分析网络连接的问题
  • proxychains:这是一个代理转发工具,可以将网络流量通过代理服务器转发。它可以帮助你在终端中使用代理访问互联网,用于加密和隐藏你的真实IP地址

这里推荐一下 proxychains ,在终端需要使用代理时,我们通常使用环境变量来实现:

Bash
$ export http_proxy=http://127.0.0.1:11080
$ export https_proxy=http://127.0.0.1:11080
$ curl cip.cc
IP      : 1.2.3.4
地址    : 中国  香港  pccw.com
数据二  : 香港 | 电讯盈科有限公司
数据三  : 中国香港 | 电讯盈科
URL     : http://www.cip.cc/1.2.3.4

设置环境变量的方法不太方便,每次都需要手动设置代理环境,Proxychains 无需每次都设置代理信息

编辑:/etc/proxychains.conf

INI
# proxychains.conf  VER 3.1
#
...
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
# socks4        127.0.0.1 9050
http 127.0.0.1 11080

使用不再需要设置环境变量,直接用 Proxychains 进行代理

Bash
$ proxychains curl cip.cc
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-127.0.0.1:11080-<><>-127.0.0.1:11080-<><>-OK
IP      : 1.2.3.4
地址    : 中国  香港  pccw.com
数据二  : 香港 | 电讯盈科有限公司
数据三  : 中国香港 | 电讯盈科
URL     : http://www.cip.cc/1.2.3.4

2.10.4. 系统备份

timeshift 是一款增量系统备份工具,支持定时增量备份,指定备份目录以及恢复系统等功能

Bash
sudo apt install timeshift

打开后设置备份方式、备份位置以及备份对象等

2.10.5. 后台运行

在Linux中,常见后台运行会借助 nohop 程序,如下:

Bash
nohup aria2c -c /etc/aria2/aria2.conf >> /var/log/aria2.log 2>&1 &

nohup 用于运行后台进程功能单一,不支持切割日志、程序重启、环境变量设置等

Supervisor 是一个用于管理和监控进程的开源工具,以刚才为例,先安装 Supervisor

Bash
sudo apt install supervisor

启用 Supervisor

Bash
sudo apt install supervisor
sudo systemctl enable supervisord
sudo systemctl start supervisord

写一份配置单,编辑:/etc/supervisor/conf.d/aria2c.conf

INI
[program:Aria2]
command=/home/chancel/apps/aria2c/aria2c -c /home/chancel/apps/aria2c/aria2c.conf
autostart=true # 开机自启
autorestart=true # 在程序异常退出后,自动重启
stdout_logfile=/var/log/supervisor/%(program_name)s.log # 日志路径
stderr_logfile=/var/log/supervisor/%(program_name)s.log # 日志路径
stdout_logfile_maxbytes=10MB # 日志大小
stdout_logfile_backups=5 # 保留5份日志文件
stdout_capture_maxbytes=1MB # 日志切割大小
user=chancel

Supervisor 支持热加载新的配置文件,无需重启

Bash
# 与 Supervisorctl reload不同,update不会重启任何未修改的应用,reload会重新读取所有配置文件重启所有应用
sudo supervisorctl update

查看目前正在运行的 aria2c 进程

Bash
➜ ps -ef | grep aria2c
chancel     1288     940  0 9月01 ?       00:00:15 /usr/bin/aria2c --conf=/etc/aria2c/aria2c.conf

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]