我的技术笔记

记录技术历程

准备

插入 M.2 硬盘后,打开电源,检查硬盘是否被系统识别

1
sudo lsblk

显示信息,发现有设备 nvme0n1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2318
loop1 7:1 0 64M 1 loop /snap/core20/2379
loop2 7:2 0 87M 1 loop /snap/lxd/27037
loop3 7:3 0 87M 1 loop /snap/lxd/29351
loop4 7:4 0 40.4M 1 loop /snap/snapd/20671
loop5 7:5 0 38.8M 1 loop /snap/snapd/21759
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
├─sda2 8:2 0 2G 0 part
└─sda3 8:3 0 462.7G 0 part
├─ubuntu--vg-lv--0 253:0 0 32G 0 lvm [SWAP]
├─ubuntu--vg-lv--1 253:1 0 1G 0 lvm /boot
└─ubuntu--vg-lv--2 253:2 0 429.7G 0 lvm /
nvme0n1 259:0 0 1.8T 0 disk

获取新硬盘完整路径

1
sudo fdisk -l

显示信息

1
2
3
4
5
Disk /dev/nvme0n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 990 PRO 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

新硬盘格式化为 ext4

1
sudo mkfs -t ext4 /dev/nvme0n1

输出信息

1
2
3
4
5
6
7
8
9
10
11
12
13
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 488378646 4k blocks and 122101760 inodes
Filesystem UUID: b51468a6-ed06-47e1-9173-9975da25a197
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

尝试挂载

尝试挂载硬盘到目录 /mnt/disk.m2

新建目录

1
sudo mkdir /mnt/disk.m2

挂载命令

1
sudo mount -t ext4 /dev/nvme0n1 /mnt/disk.m2

检查挂载

1
sudo mount

在输出信息中找到 /dev/nvme0n1 相关信息

1
/dev/nvme0n1 on /mnt/disk.m2 type ext4 (rw,relatime)

取消挂载

1
sudo umount /mnt/disk.m2

配置自动挂载

1
sudo vim /etc/fstab

在文件末尾新增配置

1
2
# disk nvme of m2 point at /mnt/disk.m2
/dev/nvme0n1 /mnt/disk.m2 ext4 defaults 0 2

从0开始 Rust

配置安装 cargo

配置 cargo 镜像

进入文件夹 : cargo 安装目录

默认(~/.cargo)

创建文件 config

1
2
3
4
5
6
7
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'

[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"

更多配置 参考文档

1
2
3
4
5
6
7
8
9
[alias]     # command aliases
b = "build"
c = "check"
t = "test"
r = "run"
rr = "run --release"
recursive_example = "rr --example recursions"
space_example = ["run", "--release", "--", "\"command list\""]

启航

Rust 练习引导项目,安装 rustlings

1
2
3
4
# find out the latest version at https://github.com/rust-lang/rustlings/releases/latest (on edit 5.5.1)
git clone -b 5.5.1 --depth 1 https://github.com/rust-lang/rustlings
cd rustlings
cargo install --force --path .

不积跬步,无以至千里

1
rustlings watch

完成练习后,卸载 rustlings

1
cargo uninstall rustlings

在 Windows 11 平台上安装 Docker Desktop
选择 WSL2 安装完成,发现没有出现镜像存储位置的配置。
好吧~我避免系统盘空间不足或后续重装,那就自己动手调整一下。

检查 docker 状态,关闭 docker

启动 Windows Terminal 或 PowerShell,输入 wsl 状态查询命令

1
wsl -l -v --all

执行后可以看到 docker-desktop 和 docker-desktop-data 的状态是 Running ,如下图所示:

Docker 关闭前状态

现在,先退出 docker

在 Windows 任务栏右下角,右键点击 docker-desktop 任务图标,在菜单里选择 “Quit Docker Desktop”

Docker 关闭任务栏

退出后,我们再运行一下状态查询命令,等待查询状态变成 Stopped 就表示 docker 已关闭

Docker 关闭后状态

导出 WSL 中的 docker

准备导出到 D:\wsl-docker\ 目录下

1
wsl --export docker-desktop D:\wsl-docker\docker-desktop.tar
1
wsl --export docker-desktop-data D:\wsl-docker\docker-desktop-data.tar

导出命令执行完成后,在 D:\wsl-docker\ 可以看到 docker-desktop.tar docker-desktop-data.tar

Docker 导出接口

从 WSL 中注销现有的 docker

1
wsl --unregister docker-desktop
1
wsl --unregister docker-desktop-data

注销现有的 docker

重建 WSL 中的 docker

新建的 WSL 的 Docker 存储在 G:\wsl-docker 目录下

1
wsl --import docker-desktop G:\wsl-docker\docker-desktop D:\wsl-docker\docker-desktop.tar --version 2
1
wsl --import docker-desktop-data G:\wsl-docker\docker-desktop-data D:\wsl-docker\docker-desktop-data.tar --version 2

导入完成后,启动 Docker Desktop ,查询状态如下:

重建 docker 状态

因存在 Windows 与 Ubuntu 共享文件的需求,尝试在 Ubuntu 上搭建 Samba

安装

1
sudo apt-get install samba

配置

创建共享文件夹

1
2
3
4
# 新建共享目录
sudo mkdir /opt/android-lan-share
# 设置目录权限
sudo chmod 777 /opt/android-lan-share

Samba

打开配置文件

1
sudo vim /etc/samba/smb.conf  

追加 /opt/android-lan-share 共享文件目录配置

1
2
3
4
5
6
7
8
9
10
11
12
[android.lan.share]
comment = android lan share
browseable = yes
path = /opt/android-lan-share
create mask = 0700
directory mask = 0700
valid users = android
force user = android
force group = android
public = yes
available = yes
writable = yes

Samba - 用户

Linux 账号-新建

1
sudo useradd android

Samba 账号

1
sudo smbpasswd -a android

重启验证配置

1
sudo service smbd restart

扩展

查看 Samba 服务中的用户列表

1
sudo pdbedit -L

删除 Samba 服务中的特定用户

1
sudo smbpasswd -x 用户名

删除 Linux 特定用户

1
sudo userdel 用户名

删除 Linux 中 特定用户 所有信息

1
sudo userdel -r 用户名

Systemd 统一管理所有 Unit 的日志。journalctl 查看所有日志(内核日志和应用日志)。

配置文件是

1
/etc/systemd/journald.conf

查看所有日志

默认情况下 ,只保存本次启动的日志

1
sudo journalctl

查看内核日志

不显示应用日志

1
sudo journalctl -k

查看系统本次启动的日志

1
sudo journalctl -b

1
sudo journalctl -b -0

查看上一次启动的日志

需更改设置

1
sudo journalctl -b -1

查看指定时间的日志

1
sudo journalctl --since="2012-10-30 18:17:16"
1
sudo journalctl --since "20 min ago"
1
sudo journalctl --since yesterday
1
sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00"
1
sudo journalctl --since 09:00 --until "1 hour ago"

显示尾部的最新10行日志

1
sudo journalctl -n

显示尾部指定行数的日志

1
sudo journalctl -n 20

实时滚动显示最新日志

1
sudo journalctl -f

查看指定服务日志

1
sudo journalctl /usr/lib/systemd/systemd

查看指定进程日志

1
sudo journalctl _PID=1

查看某个路径的脚本日志

1
sudo journalctl /usr/bin/bash

查看指定用户日志

1
sudo journalctl _UID=33 --since today

查看某个 Unit 的日志

1
sudo journalctl -u nginx.service

带时间范围控制

1
sudo journalctl -u nginx.service --since today

实时显示某个 Unit 的最新日志

1
sudo journalctl -u nginx.service -f

合并多个 Unit 的日志

1
journalctl -u nginx.service -u php-fpm.service --since today

查看指定优先级日志

1
sudo journalctl -p err -b

共有8级

  1. emerg
  2. alert
  3. crit
  4. err
  5. warning
  6. notice
  7. info
  8. debug

日志默认分页输出,–no-pager 改为正常的标准输出

1
sudo journalctl --no-pager

JSON 输出 (单行)

1
sudo journalctl -b -u nginx.service -o json

JSON 输出 (多行)

1
sudo journalctl -b -u nginx.serviceqq -o json-pretty

日志文件占用硬盘空间

1
sudo journalctl --disk-usage

指定日志文件最大空间

1
sudo journalctl --vacuum-size=1G

指定日志文件保留时长

1
sudo journalctl --vacuum-time=1years
0%