🌱 🦤 🌱

备份命令

  • 备份根目录/
1
2
3
4
5
sudo rsync -aAXHv --delete -S --info=progress2 --one-file-system --numeric-ids \
--exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' \
--exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/' \
--exclude='/var/lib/dhcpcd/*' --exclude='/home/*' \
/ ./
  • 备份/home, 排除文件夹,例如--exclude='admin/lutris'
1
2
3
sudo rsync -aAXHv --delete -S --info=progress2 --one-file-system --numeric-ids \
--exclude='/home/*/.gvfs' \
/home/ ./

查看系统信息

普通信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
function pscpu {
local lines=${1:-26}

if ! [[ "$lines" =~ ^[0-9]+$ ]] || [ "$lines" -lt 1 ]; then
lines=26
fi

ps ax -e -o user,pid,ppid,psr,%cpu,%mem,stat,start,time,cmd --sort=-%cpu | head -n$lines | cut -c 1-121
}


function psmem {
local lines=${1:-26}

if ! [[ "$lines" =~ ^[0-9]+$ ]] || [ "$lines" -lt 1 ]; then
lines=26
fi

ps ax -e -o user,pid,ppid,psr,%cpu,%mem,stat,start,time,cmd --sort=-%mem | head -n$lines | cut -c 1-121
}


function sysinfo {
lsb_release -a
echo

grep -m1 'model name' /proc/cpuinfo
local sockets=$(grep "physical id" /proc/cpuinfo | sort -u | wc -l)
echo "cpu Socket(s): $sockets"
local cores_per_socket=$(grep "cpu cores" /proc/cpuinfo | uniq | awk '{print $4}')
echo "cpu Core(s) per socket: $cores_per_socket"
local threads=$(grep "processor" /proc/cpuinfo | wc -l)
echo "cpu Thread(s): $threads"
echo -n "cpu Flags: "; grep -Eo '\b(sse|avx)\w*\b' /proc/cpuinfo | sort -u | tr '\n' ' ' ; echo
echo


lspci | grep -i vga
echo

lsblk -a -d -o NAME,TYPE,SIZE,MODEL,SERIAL,TRAN
echo

ip addr show | awk '
BEGIN { in_up = 0 }
/^[0-9]+: / {
in_up = 0
if ($0 ~ /state UP/) {
in_up = 1
}
}
in_up { print }
'
echo


screen_width=$(tput cols 2>/dev/null); awk -v sw="$screen_width" '
/cpu MHz/ {
data[++count] = sprintf("cpu=%d freq=%.2fMHz", n, $NF)
len = length(data[count])
max_len = (len > max_len) ? len : max_len
n++
}
END {
cols = int(sw / (max_len + 2))
cols = (cols < 1) ? 1 : (cols > count ? count : cols)
per_col = 10; group = cols * per_col
for (i = 1; i <= count; i++) {
c = int(((i - 1) % group) / per_col)
cw[c] = (length(data[i]) > cw[c]) ? length(data[i]) : cw[c]
}
groups = int((count + group - 1) / group)
for (g = 0; g < groups; g++) {
start = g * group
for (r = 1; r <= per_col; r++) {
line = ""
for (c = 0; c < cols; c++) {
idx = start + c * per_col + r
if (idx > count) break
line = line sprintf("%-" (cw[c] + 2) "s", data[idx])
}
if (line) print line
}
if (g < groups - 1) print ""
}
}
' /proc/cpuinfo
}

查看RAID

1
lspci | grep -i raid

查看GPU

1
lspci -v -nn -d ::03xx
1
nvidia-smi

查看网络

1
sudo iptables  -t  nat -nvL
1
ss -tulnp

解压缩命令

解决zip乱码

1
unar xxx.zip

常用解压缩

1
tar cvf test.tar.gz test
1
tar xvf test.tar.gz
1
tar tvf test.tar.gz

关于arch

格式化NTFS

  • 格式化NTFS Microsoft 储存空间
1
sudo mkfs.ntfs -f /dev/sdxn

开关机相关

  • 定时关机
1
shutdown -P "3:00"
1
shutdown -c
  • 查看开机时间
1
systemd-analyze
  • 检查是否有 systemd 服务失败
1
systemctl --failed
  • 检查 /var/log 日志文件中是否存在错误,检查 systemd 日志中的高优先级错误
1
journalctl -p 3 -b

包管理相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo pacman -S package_name        # 安装软件包
sudo pacman -Sw package_name # 下载包而不安装它
sudo pacman -Syu package_name # 升级系统并安装软件包,Arch Linux 不支持部分升级,建议用此命令先升级再安装
sudo pacman -Syu # 升级系统
sudo pacman -Rsn package_name
sudo pacman -Rdd package_name # 要删除一个被其他软件包依赖的软件包,但是不删除依赖这个软件包的其他软件包
pacman -Qqdt # 找出孤立包 Q为查询本地软件包数据库 d标记依赖包 t标记不需要的包 dt合并标记孤立包
sudo pacman -Rsn $(pacman -Qqtd) # 删除孤立软件包
sudo pacman -Fy # 更新命令查询文件列表数据库
pacman -F xxx # 当不知道某个命令属于哪个包时,用来查询某个xxx命令属于哪个包
pacman -Qi xxx # 查看包的详细信息
pacman -Qqe # 安装的软件包
pacman -Qqen # 安装的软件包(省略外部包)
pacman -Qqem # 安装的 AUR 和其他外部包
  • 更新时忽略软件包
1
sudo pacman -Syu --ignore lib32-fontconfig,fontconfig
  • 降级软件包
1
sudo pacman -U /var/cache/pacman/pkg/fontconfig-2:2.16.2-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/lib32-fontconfig-2:2.16.2-1-x86_64.pkg.tar.zst

系统服务操作

1
2
3
4
5
6
7
8
9
systemctl start dhcpcd          # 启动服务
systemctl stop dhcpcd # 停止服务
systemctl restart dhcpcd # 重启服务
systemctl reload dhcpcd # 重新加载服务以及它的配置文件
systemctl status dhcpcd # 查看服务状态
systemctl enable dhcpcd # 设置开机启动服务
systemctl enable --now dhcpcd # 设置服务为开机启动并立即启动这个单元:
systemctl disable dhcpcd # 取消开机自动启动
systemctl daemon-reload dhcpcd # 重新载入 systemd 配置 扫描新增或变更的服务单元 不会重新加载变更的配置 加载变更的配置用 reload

添加引导信息

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

删ntfs ditrty bit

1
sudo pacman -S ntfs-3g
1
sudo ntfsfix -d /dev/nvme0n1p3
1
sudo ntfsfix -d /dev/sda3

终端设置en环境

1
LANGUAGE=en zsh

关闭超线程

1
cat /sys/devices/system/cpu/smt/active
1
lscpu -e
1
2
3
su
echo off > /sys/devices/system/cpu/smt/control
exit

一些位置

  • 环境变量位置
1
file /etc/environment
1
file /etc/profile
1
file ~/.bashrc
  • 应用程序位置
1
ls /usr/share/applications/
1
ls ~/.local/share/applications/
  • 自动启动位置
1
ls /etc/systemd/system/
1
ls /usr/lib/systemd/system/
1
ls /usr/lib/systemd/user/
1
ls /etc/systemd/user/
1
ls ~/.config/autostart/

ssh相关

需要显示图形界面

1
ssh admin@172.16.1.2 -Y

ssh连接不需输入密码

  • 自动设置
1
ssh-copy-id -p 22 name@172.16.1.1
  • 手动设置
1
ssh-keygen -t rsa
1
cat ~/.ssh/id_rsa.pub
1
2
ssh -p 22 name@172.16.1.1 -Y
vim ~/.ssh/authorized_keys

正在运行程序后台运行

1
ctrl + z
1
bg
1
disown %1

快速对比两个文件差异

1
2
vimdiff
:set diffopt+=iwhiteall
1
git diff --no-index --word-diff=color --word-diff-regex='.'

快速查找文件位置

1
tree -f | grep filename

快速删除文件

1
find . -name "CHG" -type f
1
find . -name "CHG" -type f -print -delete

发送消息给其他用户

1
echo "hello" | write name

根据备份在新设备安装系统

新设备先分好区

  • 使用启动U盘进入
  • 查看磁盘分区
1
fdisk -l
  • 手动分区

在旧设备使用rsync备份

  • 备份根目录/
1
2
3
4
5
sudo rsync -aAXHv --delete -S --info=progress2 --one-file-system --numeric-ids \
--exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' \
--exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/' --exclude='/home/*' \
--exclude='/home/*/.gvfs' --exclude='/var/lib/dhcpcd/*' \
/ ./
  • 备份/home
1
2
3
4
5
sudo rsync -aAXHv --delete -S --info=progress2 --one-file-system --numeric-ids \
--exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' \
--exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/' \
--exclude='/home/*/.gvfs' --exclude='/var/lib/dhcpcd/*' \
/home/ ./

重新使用启动U盘

  • 挂载根分区
1
mount /dev/nvme0n1p2 /mnt
  • 挂载EFI系统分区
1
mount --mkdir /dev/nvme0n1p1 /mnt/boot
  • 挂载home分区
1
mount --mkdir /dev/nvme0n1p3 /mnt/home
  • 启用交换分区
1
swapon /dev/nvme0n1p4
  • 复查挂载情况
1
df -h
  • 复查 Swap 分区挂载情况
1
free -h
  • 安装软件包
1
pacstrap /mnt linux-zen
  • 生成 fstab 文件
1
genfstab -U /mnt > /mnt/etc/fstab
  • 复查一下 /mnt/etc/fstab 确保没有错误
1
cat /mnt/etc/fstab

arch-chroot配置

  • chroot
1
arch-chroot /mnt
  • 将GRUB安装到你的硬盘上
1
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable
  • 生成主配置文件
1
grub-mkconfig -o /boot/grub/grub.cfg
  • 离开
1
exit
  • 卸载新分区
1
umount -R /mnt

重启

1
reboot

安装hyprland桌面(todo)

  • Todo
1
sudo pacman -S hyprland kitty pipewire wireplumber qt5-wayland qt6-wayland dunst hyprpolkitagent xdg-desktop-portal-hyprland
1
sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils egl-wayland
  • Edit /etc/mkinitcpio.conf. In the MODULES array, add the following module names:
1
vim /etc/mkinitcpio.conf
1
MODULES=(... nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)
  • Then, create and edit /etc/modprobe.d/nvidia.conf. Add this line to the file:
1
vim /etc/modprobe.d/nvidia.conf
1
options nvidia_drm modeset=1 fbdev=1
  • Lastly, rebuild the initramfs with sudo mkinitcpio -P, and reboot.
1
sudo mkinitcpio -P
1
reboot
  • To verify that DRM is actually enabled, run cat /sys/module/nvidia_drm/parameters/modeset which should return Y
1
cat /sys/module/nvidia_drm/parameters/modeset
  • 修改
1
vim ~/.config/hypr/hyprland.conf
1
# autogenerated = 1 # remove this line to remove the warning
1
monitor = eDP-1, 2560x1440@165, 0x0, 1
1
2
3
4
5
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = WLR_NO_HARDWARE_CURSORS,1
1
2
exec-once = dunst
exec-once = /usr/libexec/hyprpolkitagent

壁纸组件

1
sudo pacman -S swww
1
2
exec-once = swww init
exec-once = swww img /home/admin/app/1.png

状态栏组件

1
sudo pacman -S waybar
1
exec-once = waybar

app启动器

1
sudo pacman -S rofi
1
$menu = rofi -show drun
1
$altMod = ALT
1
bind = $altMod, Q, exec, $menu

系统剪切版

1
sudo pacman -S cliphist
1
2
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
1
2
bind = $mainMod, O, togglefloating,
bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy

自动挂载

1
sudo pacman -S udiskie
1
exec-once = udiskie

音量控制

1
sudo pacman -S pamixer playerctl
1
2
3
4
5
6
7
8
9
# Volume and Media Control
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
bind = , XF86AudioMicMute, exec, pamixer --default-source -m
bind = , XF86AudioMute, exec, pamixer -t
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPause, exec, playerctl play-pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous

屏幕背光

1
sudo pacman -S brightnessctl
1
2
3
# Screen brightness
bind = , XF86MonBrightnessUp, exec, brightnessctl s +5%
bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%-