PandHedge

Linux基础

2025-09-13
PandHedge

Linux 基础

Centos 7 64x

         
         
应用程序     shell(提供交互界面\接受用户指令\翻译并传输给内核) 库调用\系统调用
library API    
内核 Kernel   操作系统 管理硬件资源,把硬件资源提供给上层程序
硬件     CPU\存储器\输入\输出  

.dll 动态链接库 .so 共享对象 dynamic link library \ shared object

内核功能:

进程管理—内存管理—-文件系统—-网络功能—-硬件驱动—-安全机制

常见系统调用

  • 文件操作:open()read()write()close()
  • 进程管理:fork()exec()wait()
  • 内存管理:brk()mmap()
  • 网络通信:socket()bind()connect()
  • 设备控制:ioctl()

Linux的基本原则:

1、由目的单一的小程序组成;组合小程序完成复杂任务; 2、一切皆文件; 3、尽量避免捕获用户接口; 4、配置文件保存为纯文本格式;

GUI接口: CLI接口:(命令行) 命令提示符,prompt, bash(shell) #: root $: 普通用户

命令:

命令格式: 命令 选项 参数 选项:(修改命令执行方式,通常可以组合) 短选项: -(跟一个字母) 多个选项可以组合:-a -b = -ab 长选项: –(跟一个单词,通常分开) 参数:命令的作用对象

使用凭证:

root, redhat

(严格区分大小写)

虚拟终端(terminal):

Ctrl+Alt+F1-F6(切换虚拟终端) F7或者 startx & 启动图形界面

CLI:

bash:bash shell

su: switch user

# su [-l] 用户名

# passwd (修改当前密码)

密码复杂性规则:(修改普通用户密码)

6位数字密码:10^6 加上字母 :36^6

[email protected] 1、使用4种类别字符中至少3种; 2、足够长,大于7位; 3、使用随机字符串; 4、定期更换; 5、循环周期足够大;

Shell:

GUI: Graphic User Interface Windows X-Window Gnome KDE Xface CLI: Command Line Interface sh bash csh ksh zsh tcsh

02-01


30分钟入门Linux

Linux 系统架构和组成

内核–>系统库–>Shell–>应用程序

  • 内核:系统的核心和基础,负责管理系统的硬件和提供最基础的系统服务。包含:设备驱动程序、进程管理、内存管理、文件系统、网络协议栈等等。
  • 系统库:用于支持应用程序开发的软件库,提供一些常用的函数和接口。
  • Shell:命令行解释器,用户使用Linux系统的接口,它接受用户输入的命令,然后传递给操作系统来执行。
  • 应用程序:如提供页面访问服务的Nginx\数据库服务的MySQL

Linux发行版包含 内核 应用程序 系统工具 库文件 图形界面 Shell 包管理器

如何安装配置Linux系统:虚拟机软件、容器安装、云服务器

Vi编辑器

vi or vi <File name>

三种模式

image-20250720102232629

插入模式

image-20250720102550916

r 替换模式 R持续替换模式

尾行模式

:q 退出 :wq 保存并退出 :q! 强制退出

:set number\nu 显示行号 :set nonu 关闭行号显示

:50 跳转到文件第五十行

:set ic 全局忽略大小写设置 :set noic

替换 :n1,n2s/old/new/g

n1,n2 n1行到n2行(1,$ 第一行到最后一行) s表示替换

/g表示全局,匹配到的行内全部对应内容(如果不加,只会替换匹配到的第一行的第一个内容)

命令模式

复制粘贴删除

yy 复制内容 2yy 复制两行内容 数字表示行数

p 粘贴内容 3p 粘贴三次内容 数字表示次数

dd 删除内容 p 将刚刚删除内容粘贴到下一行

x 删除光标所在字符 X删除光标前一个字符

移动光标

H J K L 左上下右 ^ 行首 $ 行尾

G 跳转到文件最后一行 gg 跳转到文件第一行 100G 跳转到文件第100行

翻页

ctrl+f 向前翻页 ctrl+b 向后翻页 ctrl+u 向上翻半页 ctrl+d 向下翻半页

查找

/Hello 从光标位置向下查找Hello ?Hello 从光标位置向上查找

n 继续查找下一个(与之前方向相同) N 向相反方向查找

/Hello\c 不区分大小写

撤销 u

配置文件 .vimrc文件用来保存vi配置信息

Linux 文件命令

ls

-l -a -h -t -r -i

-l

image-20250720110915958

d:目录 -:普通文件 l:链接文件

剩下九个字符表示文件的权限,三个字符一组。r:可读 w:可写 x:可执行 -:没有相应权限

第一组表示所有者(user)的权限,第二组表示同组用户(group)的权限,第三组表示其他用户(other)的权限

第二列数字表示硬链接数

ln 源文件名称 链接文件名称 创建硬链接

硬链接文件和源文件共享一个i节点,修改其中一个文件,两者都会修改。 只可以指向文件 删除其中之一,另外一个可以正常访问。

-s 创建软链接 可以指向文件、目录 软链接文件,删除源文件,软链接文件就会失效

echo 输出内容

echo word > file 内容输出到文件中

cat 展示文件内容

chmod 修改权限

chmod +r 文件名 给文件添加可读权限

chmod u+r 文件名 a: 所有人 u :拥有者 g:同组 o:其他人

chmod 777 文件名

可用数字表示权限 r w x r w x r w x

4 2 1 4 2 1 4 2 1 –> 7 7 7

touch 更新文件修改时间(若文件不存在则新建一个)

pwd 显示当前所在位置

cd 切换目录

cd / 切换到根目录

cd .. 返回上一层

. 当前目录 .. 上一层目录

- 上一次所在的目录 ~ 当前用户的家目录

image-20250720115804000

cp 源文件 复制后文件名 复制文件

mv 移动文件

rm 删除文件

-r 递归删除目录

mkdir 创建目录

-p 创建多级目录

du 查看文件目录结构和大小

tree 以树形式查看目录

reboot 重启 shutdown 关机 init 6

wget

ps -eaf grep [s]ystemd

exit

Systemctl

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

systemctl –version

systemctl

systemctl是 Systemd 的主命令,用于管理系统。

# 重启系统
$ sudo systemctl reboot

# 关闭系统,切断电源
$ sudo systemctl poweroff

# CPU停止工作
$ sudo systemctl halt

# 暂停系统
$ sudo systemctl suspend

# 让系统进入冬眠状态
$ sudo systemctl hibernate

# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep

# 启动进入救援状态(单用户状态)
$ sudo systemctl rescue

systemd-analyze

systemd-analyze命令用于查看启动耗时。

# 查看启动耗时
$ systemd-analyze                                                                                       

# 查看每个服务的启动耗时
$ systemd-analyze blame

# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain

# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service

systemctl list-units

# 列出正在运行的 Unit
$ systemctl list-units

# 列出所有Unit,包括没有找到配置文件的或者启动失败的
$ systemctl list-units --all

# 列出所有没有运行的 Unit
$ systemctl list-units --all --state=inactive

# 列出所有加载失败的 Unit
$ systemctl list-units --failed

# 列出所有正在运行的、类型为 service 的 Unit
$ systemctl list-units --type=service

systemctl status命令用于查看系统状态和单个 Unit 的状态。

# 显示系统状态
$ systemctl status

# 显示单个 Unit 的状态
$ sysystemctl status bluetooth.service

# 显示远程主机的某个 Unit 的状态
$ systemctl -H [email protected] status httpd.service

对于用户来说,最常用的是下面这些命令,用于启动和停止 Unit(主要是 service)。

# 立即启动一个服务
$ sudo systemctl start apache.service

# 立即停止一个服务
$ sudo systemctl stop apache.service

# 重启一个服务
$ sudo systemctl restart apache.service

# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service

# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service

# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload

# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service

# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service

# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500

配置文件就是普通的文本文件,可以用文本编辑器打开。

systemctl cat命令可以查看配置文件的内容。

$ systemctl cat atd.service

[Unit]
Description=ATD daemon

[Service]
Type=forking
ExecStart=/usr/bin/atd

[Install]
WantedBy=multi-user.target

Shell

shell是一个命令解释器,可以接受用户命令,然后调用操作系统的内核去执行这下命令

echo $SHELL 显示当前系统环境变量中脚本

echo $0 显示当前执行的脚本

Hello World.sh #!/bin/bash echo Hello Wordl

read

image-20250724181951200

$name 引用参数

export name=杨老 环境变量 永久配置文件 .profile .bashrc

source .bashrc

shuf -i 1-10 -n 1

break continue

 

if [[]];then

{}

elif [[]];then else

{}

fi


while [[]]

do

{}

done

正则表达式


dpkg -l # 列出所有已安装软件包(内容较多)

dpkg -l grep <关键词> # 过滤包含关键词的软件包

dpkg -S /usr/bin/ls # 查找 /usr/bin/ls 属于哪个软件包:


上一篇 HTML

下一篇 MySql基础

Comments

Content