Linux Manual

文件结构

各种Linux的目录结构是不同的,分为统一布局和传统布局。

主流发行版基本使用统一布局,如ArchLinuxUbuntuRedHat

目录结构(统一布局)

  • /bin —> /usr/bin 命令文件夹
  • /sbin —> /usr/bin 管理员命令文件夹
  • /lib —> /usr/lib 存放32位动态链接库
  • /lib64 —> /usr/lib 存放64位动态链接库
  • /boot 引导文件夹
  • /etc 配置文件夹
  • /home 用户文件夹
  • /root root用户的home文件夹
  • /usr 应用程序存放处
  • /dev 设备文件夹
  • /mnt 经常用来挂载的文件夹
  • /var 存放不断扩张的文件, 比如日志文件
  • /opt 存放额外软件的文件夹
  • /proc 进程文件夹
  • /run 临时文件夹
  • /srv 存放服务启动之后要提取的数据
  • /sys 内核对象存放的文件夹
  • /tmp 临时文件夹

文件权限

比如

$ ls -l
-rw-r--r-- 1 user user 0 3月 28 13:19 a.test
drwxr-x--- 11 user user 4096 3月 22 20:53 Documents
文件类型文件所有者权限文件所有者所属组权限其他用户权限
01 2 41 2 41 2 4
dr w xr w xr w x
是否为目录文件读 写 执行读 写 执行读 写 执行
将权限分为四个部分

/boot

文件名类型是否必要内容
vmlinuz-linux内核启动Linux的核心程序
initramfs-linux.img初始化根文件系统启动所需模块和脚本
initramfs-linux-fallback.img初始化根文件系统后备文件上一次成功生成的initramfs
intel(有可能是amd)-ucode.imgCPU微码CPU安全补丁
EFI/EFI启动文件夹包含grub的.efi文件
grub/grub配置和模块引导配置,如grub.cfg
/boot目录里的各个文件

网络

ip命令

ip link  #最基本的命令
ip link set <dev> up|down  #开关网口
ip addr  #查看每个网口上的ip地址
ip addr add|del x.x.x.x/n dev <dev>  #在某个网口上添加或删除ip地址
ip route add devfault via x.x.x.x    #设置默认网关

wpa_supplicant连接wifi

扫描wifi网络
iw <无线网口> scan | grep SSID
创建配置文件
wpa_passphrase "SSID" "密码" | <位置>/xxx.conf
连接
wpa_supplicant -B -i <无线网口> -c <刚才保存的位置>/xxx.conf

NetworkManager

配置文件位置

位置说明
/etc/NetworkManager/NetworkManager.conf主配置文件
/etc/NetworkMananger/system-connections保存的连接文件(keyfile格式)

nmcli

常用命令

nmcli d wifi   #扫描wifi
nmcli d wifi connect "SSID名称" password "wifi密码"  #连接wifi
nmcli connection delete "SSID名称"   #删除连接

若要修改连接的话只需要一下命令即可

nmcli connection modify "SSID" ipv4.addresses x.x.x.x/n
nmcli connection modify "SSID" ipv4.gateway x.x.x.x
nmcli connection modify "SSID" ipv4.method manual
nmcli connection down "SSID" && nmcli connection up "SSID"

修改连接完全不用记,没用,一点用没有(宋浩音),日常生活中只须使用nmtui即可。

nmtui

该命令可以打开伪GUI式的页面对网络进行配置,包括无线连接

首先要用nmcli扫描wifi,才会显示出SSID列表

Systemd

基本命令

#查看系统启动状态
systemctl status

#列出所有服务
systemctl list-units --type=service

#启动 / 停止 / 重启某个服务
systemctl start|stop|restart xxx

#设置服务开机启动
systemctl enable xxx

#通过journald查看服务日志
journalctl -u xxx

#修改默认启动目标
systemctl set-default multi-user.target

#启动用户级别的服务
systemctl --user start|stop|restart xxx

journalctl

命令

基本用法
journalctl       #查看所有日志
journalctl -r    #反向显示,最新的在最上面
journalctl -f    #实时跟踪日志
按时间查看
journalctl --since=today
journalctl --since "yyyy-mm-dd HH:MM" --until "yyyy-mm-dd HH:MM"
查看某个服务的日志
journalctl -u sshd.service #指定服务
journalctl -u NetworkManager.service -b #本次启动期间的日志
查看某次启动的日志
journalctl -b (-x)  #x∈N+, 不加-x则显示本次启动的日志
清理日志
journalctl --vacuum-time=7d #删除7天前的日志
journalctl --vacuum-size=100M #日志超过100MB就清理

日志存储位置

类型位置
持久化日志(如果存在)/var/log/journal/
仅内存日志/run/log/journal/

文件结构

路径用途
/etc/systemd/system/系统管理员本地配置(优先级高)
/usr/lib/systemd/system/软件包安装的unit文件
/run/systemd/system/运行时生成的unit
/etc/systemd/system/default.target指向当前默认启动的target

关键概念

概念说明
Unit.service、.target、.socket、.mount等文件
Target运行级别、一组unit的集合
Service服务文件
Timer定时任务
Socket定义socket激活服务
journal提供统一的日志管理

Service文件语法

[Unit]
Description=MyService
After=network.target    #在网络服务后

[Service]
ExecStart=/usr/local/bin/myscript.sh
Restart=on-failure      #脚本崩溃时自动重启
User=root               #root用户运行
Type=simple             #默认类型,直接运行ExecStart

[Install]
WantedBy=multi-user.target  #随系统启动(非图形模式)

文件保存后,运行一下命令让它生效

systemctl daemon=reexec     #或者daemon-reload,更新配置
systemctl enable myscript   #开启启动
systemctl start myscript    #手动启动

mkinitcpio

Make Initial CPio是一个Arch Linux 及其衍生版用于生成initramfs的官方工具

适用系统主要为Arch Linux、Manjaro等。

工作流程

  1. 首先读取配置文件/etc/mkinitcpio.conf
  2. 加载配置文件里的HOOKSMODULES
  3. 打包生成initramfs

HOOKS

处理逻辑,如udev、filesystems、encrypt、lvm2等。

MODULES

内核模块,如ext4、i915、nvme等。

Linux启动过程

初始化固件

开机后,主板运行UEFI固件,从UEFI分区加载/boot/EFI/Boot/bootx64.efi。

加载引导程序

grub加载/boot/vmlinuz-linux.img内核和/boot/initramfs-linux.img文件。

Linux内核初始化

初始化内核态设备驱动、内存管理、CPU核心。

挂载根文件系统,运行init程序,init程序在initramfs里。

initramfs执行

挂载真正的/目录。

因为linux内核初始化的时候,挂载的是initramfs的临时/目录,执行的也是initramfs的init程序。

initramfs 由 mkinitcpio创建

systemd启动

运行/usr/bin/init,也就是/usr/lib/systemd/systemd程序。

挂载文件系统,激活swap,设置主机名、时间、日志;

启动网络服务(不是NetworkManager),启动所有配置为enable的service文件;

进入默认的target,默认是graphical.target或multi-user.target;

最后启动getty或display manager或桌面环境。

用户登入使用

用户登入后开始正常使用系统。

连接

建立连接

ln -s <源文件> <连接文件>  #软链接
ln <源文件> <连接文件>     #硬链接

软硬连接区别

特性软链接硬链接
指向对象指向路径指向文件的inode
inode是否相同
是否可以跨分区可以不可以
是否可以连接目录可以不可以
源文件被删除后链接失效仍然可以访问
ls -l 结果l类型,显示箭头 ->-类型, 没有箭头

什么是inode

保存的信息

  • 文件类型
  • 权限
  • 所有者
  • 文件大小
  • 最后访问/修改/更改时间
  • 数据块的指针(告诉系统,文件内容在那些磁盘块上)
  • 硬链接数量

不保存的信息

  • 文件名
  • 文件路径
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇