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>
三种模式

插入模式

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
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 .. 返回上一层
. 当前目录 .. 上一层目录
- 上一次所在的目录 ~ 当前用户的家目录
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

$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 属于哪个软件包:

