Linux内核
内核是操作系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层,操作系统是计算机的核心,而内核是操作系统的核心。
Linux内核版本号由3个数字组成:r.x.y
r:目前发布的内核主版本
x:偶数表示稳定版本,奇数表示开发中版本
y:错误修补次数
文件目录详解
对Linux来说,一切皆文件。
Linux系统下只有一个根目录,用/表示。
Linux有两个用户目录(root管理员用户和普通用户),root用户的家目录是/root,普通用户的家目录是/home或~。
/bin和/usr/bin 都是存放可执行文件
/etc 存放系统配置文件,不建议存放可执行文件
/lib 系统使用的函数库的目录
/tmp 一般用户或正在执行的程序临时存放文件的目录
/usr 应用程序存放目录
/var 放置系统执行过程中经常变化的文件
Linux基本命令
文件管理
ls命令 显示目录下的文件和属性信息
Linux:
ls [目录] 显示当前目录下所有文件。
ls -a [目录] 显示所有文件,包括隐藏文件。
ll [目录]或ls -l [目录] 显示所有文件的详细信息。
Dos:
dir [目录]
attrib -h 显示隐藏文件
mkdir命令 创建目录
Linux:
mkdir b 创建一个目录b
mkdir b1,b2,b3,b4或者mkdir b{1,2,3,4}或者 mkdir b(1..4) 创建多个b目录(b1,b2,b3,b4)
mkdir 目录1/目录2 -p 在一个不存在的目录1下创建一个不存在的目录2
Dos:
mkdir b 创建一个b目录。
mkdir b1,b2,b3 创建多个目录
md 目录:新建目录
rd 目录:删除目录结构(里面必须是空的才能删除)
del 目标目录\目录+名字:删除目录内的所有文件\指定的文件
del *.*:删除当前目录中的所有文件(不是文件夹)
touch命令 创建文件
Linux:
touch a.txt 创建一个a.txt文件(若文件不存在则创建,若存在则修改最后访问时间)
touch a1,a2,a3,a4 或者touch a{1,2,3,4} 或者touch a(1..4) 创建多个a文件(a1,a2,a3,a4)
DOS:
没有直接创建文件的命令
cp命令 复制文件或目录
Linux:
cp a.txt b.txt 复制a文件并命名为b
cp 文件名 目录 将文件拷贝到指定目录下(可复制多个文件,用空格隔开)
cp -r 源目录 新文件名/目录 拷贝源目录下的所有文件到新文件下(在当前目录)或者指定目录下
DOS:
cp 改为copy
mv命令 移动或改名文件
Linux:
mv a.txt 目录 将a 文件移动到指定目录下
mv a.txt b.doc 将文件a.txt重命名为b.doc (a.txt文件必须存在 且 b.doc在当前路径下必须唯一且不存在)
mv test1.c test2.c 把test1文件的内容移动到test2中,原来的test1就删掉了,相当于给test1文件改名为test2了
DOS:
mv改为move
ren可以重命名文件
rename命令 修改后缀名
Linux:
批量更改文件扩展名
rename 's//.txt//.ext/' * txt后缀更改为ext后缀
批量删除文件扩展名
rename 's//.txt//' * 将所有txt后缀都删掉
批量添加文件扩展名
rename 's/$//.txt/' *
DOS:
rename *.jpg *.png 将所有的ipg文件更改为png文件
grep命令 文本搜索工具
Linux:
grep 关键字 文件名 输出文件中包含关键字的所在行
grep -n 关键字 文件名 输出文件中包含关键字的行和行号
grep -v 关键字 文件名 输出文件中不包含关键字的所在行
grep -vn 关键字 文件名 输出文件中不包含关键字的所在行及其行号
grep -c 关键字 文件名 输出包含关键字的行的数量
grep -l 关键字 test*.c 输出包含关键字的文件名,不输出具体的行 (如:返回test1.c test2.c...)
grep -c ^[^$] 文件名 查找文件中非空行的数量
grep -c ^$ 文件名 查找文件中空行的数量
grep -f 文件名1 文件名2 输出两个文件中相同的内容
grep -vf 文件名1 文件名2 输出两个文件中不相同的内容(文件2中有,但文件1中没有的行)
grep 字符串 文件名|wc -l ,找出关键字出现的次数,grep输出,wc -l按行统计。
如果是多个字符串出现次数,可使用: grep 'objStr1\|objStr2' 文件名|wc -l 。直接用 | 链接起来即可。
注:wc 默认统计文本中行数、字数、字符数
DOS:
grep改为find
pwd 显示当前绝对路径
pwd [文件] 显示当前所在目录的绝对路径
chmod命令 改变文件或目录权限
chmod u+r test.txt //增加用户可读
chmod u-w test.txt //撤销用户可写
chmod u=rw test.txt //重置用户权限(可读可写)
chmod u=- test.txt //重置用户权限(无任何权限)
chmod g=rw test.txt //重置用户组权限(可读可写)
角色:
u (user)主用户(文件所有者)
g (group)用户组(同一组中除了当前用户的其他用户)
o (other)其他用户(其他用户组下的所有用户)
a (all)所有用户
操作符:
+ 增加权限
- 撤销权限
= 设置权限
权限值:
r 可读,权限值4
w 可写,权限值2
x 可执行,权限值1
- 无任何权限,权限值0
注:改变文件所有者的命令为chown
若文件A的创建者希望对所有用户,包括其自身可读写文件A但不可执行A,可以使用chmod 666 A。若是可读可写可执行chmod 777 A
tar命令 解压缩命令
tar zcvf a.tar.gz a 对指定文件进行压缩(将a压缩为a.tar.gz) 参数zcvf 中v代表显示压缩过程,可以省略,zcf不能省略。
tar xf a.tar.gz 解压a.tar.gz 参数xf可以写为xvf 表示显示解压过程
zip -r a1 a 将a压缩为a1.zip
unzip a1.zip 将a1.zip解压
文档编辑
echo命令 输出字符串或提取shell变量的值
Linux:
echo “指定内容” 将指定内容输出到屏幕上
echo “指定内容” > 文件名 将指定内容重定向到指定文件中(文件若不存在,则自动新建该文件) ( >>也是重定向到文件 但是>是以覆盖的形式重定向。>>是以追加到末尾的形式重定向的)
echo $PATH 输出变量PATH的值
DOS:
一样
sed命令 处理编辑文本文件
截取指定时间段日志并输出到指定文件:
sed -n '/2020-01-01 00:00:/,/2020-12-12 24:00:/p' xxx.log > xxx.txt
-n:仅显示script处理后的结果。
p:print,打印输出。
注意:日期时间格式要和日志文件中的保持一致。
rm命令 移除文件或目录
Linux:
rm 文件名 删除指定文件
rm -r 目录 递归删除指定目录及目录下所有文件
rm -a 强制删除
DOS:
rm改为del
cat命令 查看文件
Linux:
cat 文件名 查看文件的内容
cat -n 文件名 查看文件内容的同时显示行号
Dos:
cat改为type
head 命令 查看文件头部内容
head 文件名 默认查看文件前十行的内容
head -n 4 文件名 查看文件前4行的内容
tail命令 查看文件尾部内容(实时查看日志)
tail 文件名 默认查看文件最后10行的内容
tail -n 4 文件名 查看文件最后4行的内容
tail -c 3 文件名 输出文件的最后3个字符
tail -f logname.log 查看实时日志文件(默认最后10行,但是是动态刷新的)
tail -n +1000:从1000行开始显示,显示1000行以后的
sed 查看文件第X行到第Y行
查看文件X-Y行
sed -n “X,Yp” 文件名
或者: cat 文件名 |tail -n +X |head -n Y 先从文件中,从第X行开始,找X行,然后从这X行中,找前Y行,最后输出到屏幕上
或者:cat 文件名|head -n Y|tail -n +X 先从文件中,共找到前Y行,然后从Y行的第X行开始,找X行。
rmdir命令 删除空目录
Linux:
注:必须是删除空目录,如果非空,需要用指令:rm -r删除
rmdir -p -v 目录 递归删除路径中的所有空的父目录和子目录。-p显示详细删除过程,-v如果非空则报错
Dos:
rmdir改为rd
系统管理
find命令 查找和搜索文件
find . 列出当前所在目录下所有文件和子文件
find 目录 -name “文件名” 在指定目录下查找指定文件
文件名表示方式:可以用正则符号 如*ttt* 表示文件名中有ttt,*表示任意长度
如:find 目录 -name “*.c” 查看指定目录下所有后缀名为.c的文件
find 目录 ! -name “test1.c” 找出目录下不为test1.c的文件(包含目录本身)
top命令 实时显示进程动态
top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。(动态显示耗费资源最多进程信息)
ps命令 查看进程状态
注:ps是系统在过去执行的进程的静态快照,top命令反应的是系统进程实时动态信息,默认10s更新一次,可以用ps -d指定屏幕刷新的延迟时间。
ps 显示进程状态
ps -l 显示进程详细信息
ps aux 查看系统所有进程数据
查看指定进程的指令:ps -ef |grep 进程号
kill命令
kill 进程号 杀掉指定进程
kill -9 进程号 强制杀掉指定进程
磁盘管理
df命令 显示磁盘空间使用情况
df [-h] -h以易读的方式显示
du命令 查看磁盘占用空间
du [-h] -h以易读的方式显示
网络通信
man 查看帮助
man ping:查看ping命令的用法
ssh命令 管理远程服务器
ssh [-p port] [远程主机] 登录远程服务器(port是端口号,默认是22,后面加上ip地址)
ping命令 测试主机间网络的连通性
ping www.baidu.com 测试主机与百度网站的连通性
ifconfig命令 显示和配置 网络设备信息
ifconfig 显示网络设备信息
ifconfig eth0 192.168.1.56 //给eth0网卡配置IP地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 // 给eth0网卡配置IP地址,并加上子掩码
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
hostname命令 显示系统的主机名
hostname -I 显示主机的IP地址
hostname 显示主机名
用户管理命令
id 查看当前用户的信息
whoami 查看当前用户是谁
id 用户名 查看指定用户的信息(或者判断指定用户是否存在)
who 判断登录当前主机的所有用户
su - 切换到root用户
su - 用户名 切换到指定用户
useradd 用户名 创建新用户(必须在root用户中才能添加用户)
passwd 用户名 为指定用户名设置密码(只能在root用户中才能设置密码)
exit 退出当前用户
其余命令
clear 清楚屏幕(Dos使用cls)
history 显示所有敲过的命令(系统未关机前)
vim 文件名 打开一个文件(进入文件后有三种模式:未编辑模式(默认),编辑模式,命令行模式)
未编辑模式时,按a或者i 进入编辑模式
输入冒号: 进入命令行模式
编辑模式时,按esc键 进入未编辑模式
命令行模式时, 按退格键 进入未编辑模式
未编辑模式常用命令:
yy 复制光标所在行内容
p 在光标所在行的下一行粘贴复制的内容
dd 删除光标所在行的内容
u 撤销
Ctrl +r 反撤销
^ 跳转到光标所在行的行首
$ 跳转到光标所在行的行尾
gg 跳转到当前文档的首行的第一个位置
G 跳转到当前文档的末尾行的第一个位置
命令行模式常用命令 :
wq 保存并退出vim
q! 不保存强制退出vim
/关键字 搜索关键字
more 文件名 一次查看一屏幕的文件内容
ln -s a a1 为a创建软链接文件a1(相当于windows中的快捷键)
wget 指定url 下载文件
| 管道符 如:命令1 | 命令2 表示命令1执行后的所有内容,通过管道符传递给命令2使用
uname -a 查看当前内核的信息
free -h 查看当前内存的容量 -h表示以人类正常识别的方式查看
man 命令 查看指定命令帮助信息
netstat 查看当前系统开启的端口号
Linux网络命令
curl :利用url规则在命令行下工作的文件传输工具。如curl www.baidu.com 结果会把网站的所有信息抓取下来(html)
netstat :显示网络状态信息
telnet: 用于登录远程主机
常考的linux命令:https://blog.51cto.com/u_15155099/2775387
查看全部端口号:netstat -an
查看单个端口号:netstat -an |grep 端口号
查看全部进程:ps -ef
查看单个进程号:ps -ef |grep 进程名
动态查看日志:tail -f
判断端口是否存在:netstat -an |grep 端口号 查看该端口是否已被占用
删除一个目录下的txt文件:rm -rf 文件.txt