Linux的目录结构
/
:根目录
/bin
:存放着最常使用的命令
/usr/bin
:同上
/usr/local/bin
:同上
/sbin
:存放系统管理员使用的系统管理程序
/usr/sbin
:同上
/usr/local/sbin
:同上
/home
:存放普通用户的主目录
/root
:系统管理员用户主目录
/lib
:系统开机所需要的最基本的动态链接共享库,几乎所有的应用程序都需要用到这些共享库
/lost+found
:一般为空,系统非法关机后,这里就会保存一些文件
/etc
:所有系统管理需要的配置文件和子目录
/usr
:存放用户很多应用程序和文件
/boot
:存放Linux系统开机引导文件
/proc
:这是一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv
:存放一些服务启动后需要提取的数据
/sys
:该目录下安装2.6内核中新出现的一个文件系统sysfs
/temp
:存放一些临时文件
/dev
:硬件转文件形式存储位置
/media
:系统自动识别设备,如U盘、光驱,挂载位置
/mnt
:方便用户临时挂载别的文件系统
/opt
:主机额外安装软件所存放的位置
/usr/local
:另一个主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序
/var
:这个目录存放不断扩充的东西,习惯将经常被修改的目录放在这个目录下,也包括各种日志文件
/selinux
:安全子系统,它控制程序只能访问特定文件
关机&重启操作
shutdown -h now
:立即关机
shutdown -h 1
:表示 1 分钟后关机
shutdown -r now
:立即重启
halt
:关机
poweroff
:关机
reboot
:重启系统
sync
:把内存数据同步到磁盘上
当我们关机或重启前,都应该先执行一下sync
命令,把内存的数据写入磁盘,放置数据丢失!
用户登录和注销
logout
:注销(退出)当前用户
logout
注销指令在图形界面下运行无效,在运行级别 3 下有效
用户管理
Linux用户至少要属于一个组,也可以属于多个组。
添加用户
useradd [选项] 用户名
选项:
-d
:指定用户家目录位置
-g
:指定用户所属的用户组
例子
- 在系统中创建xm用户
useradd xm
- 在系统中创建了一个xm的用户
- 当没有指定新建用户的所属组时,系统会默认创建一个和用户名同名的组,并把该用户放到这个组里面。
/home
目录下会自动生成xm文件夹
指定&修改密码
passwd 用户名
删除用户
userdel [选项] 用户名
选项:
-r
:连带删除用户的家目录
例子
- 删除用户xm,但保留其家目录
userdel xm
- 删除用户xm,并且一并删除其家目录
userdel -r xm
在实际开发中,删除用户时,一般不会把用户的家目录删除掉。
查询用户信息
id 用户名
切换用户
su - 切换用户名
exit
:返回到原来的用户
su 用户名
只是简单的切换用户,su - 用户名
会自动跳转到切换后用户的家目录
查看当前是哪个用户
whoami
用户组
增加组
groupadd 组名
删除组
groupdel 组名
修改用户组
usermod -g 用户组 用户名
修改用户登录的初试目录
usermod -d 目录名 用户名
用户和组的相关文件
-
/etc/passwd
文件用户的配置文件,记录用户的各种信息
每行含义
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
-
/etc/shadow
文件口令配置文件
每行含义
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group
文件组配置文件,记录Linux包含组的信息
每行含义
组名:口令:组标识号:组内用户列表
实用指令
Linux中的7个运行级别
- 运行级别0:关机
- 运行级别1:单用户【找回丢失密码】
- 运行级别2:多用户状态无网络服务
- 运行级别3:多用户状态有网络服务
- 运行级别4:系统未使用,保留给用户
- 运行级别5:图形界面
- 运行级别6:系统重启
系统运行级别配置文件位置:/etc/inittab
切换到指定运行级别
init 运行级别号
帮助指令
man [命令或者配置文件]
help 命令
文件目录类
-
pwd
显示当前工作目录的绝对路径
-
ls [选项] 目录或者文件名
常用选项
-a
:显示当前目录中所有的文件和目录,包括隐藏的文件-l
:以列表方式显示信息 -
cd 目录位置
切换目录
-
mkdir [选项] 要创建的目录
常用选项
-p
:创建多级目录 -
rmdir [选项] 要删除的空目录
此命令只能删除空目录
-
touch 文件名称
创建空文件
-
cp [选项] 资源 位置
拷贝文件到指定目录
常用选项
-r
:递归赋值整个文件夹\cp
指令,强制覆盖文件 -
rm [选项] 要删除的文件或目录
常用选项
-r
:递归删除整个文件夹-f
:强制删除不提示 -
mv 原文件 目标位置
移动文件与目录或重命名
-
cat [选项] 要查看的文件
查看文件内容,只读不改
常用选项
-n
:显示行号cat
指令通常会和more
指令结合使用cat -n /etc/profile | more
-
more 要查看的文件
以全屏的方式按页显示文本内容
操作方式
操作 功能说明 空格键(space)
向下翻一页 回车键(enter)
向下翻一行 q
退出more,不再显示文件内容 Ctrl
+F
向下滚动一屏 Ctrl
+B
返回上一屏 =
输出当前行的行号 :f
输出文件名和当前行行号 -
less 要查看的文件
以全屏的方式显示文本内容,但是功能上比more要强大,less在显示文件时,不是一次性将整个文件加载后再显示,而是根据显示需要加载内容,对于显示大文件具有较高的效率。
操作方式
操作 功能说明 空格键(space)
向下翻动一页 PageDown
向下翻动一页 PageUp
向上翻动一页 /子串
向下搜寻【子串】功能: n
:向下查找;N
:向上查找?子串
向上搜寻【子串】功能: n
:向下查找;N
:向上查找q
退出less -
>
&>>
>
:输出重定向,会覆盖掉原先的内容>>
:追加,将内容追加到文件的末尾基本使用
ls -l > 文件 # 列表的内容写入到文件中(覆盖写) ls -la >> 文件 # 列表内容追加到文件末尾 cat 文件1 > 文件2 # 将文件1的内容覆盖到文件2 echo "内容" >> 文件 # 将内容追加到文件中
-
echo [选项] 内容
输出内容到控制台
-
head [选项] 文件
显示文件的开头部分,默认显示前10行内容
常用选项
-n
:显示文件开头特定行数 -
tail [选项] 文件
输出文件尾部的内容,默认显示后10行内容
常用选项
-n
:显示文件结尾特定行数-f
:实时监控追踪文件中所有内容的更新 -
ln
-
软链接
ln -s [原文件或目录] [软链接名]
:创建软链接rm -rf 软链接名
:删除软链接,软链接名后不要加/
当我们使用
pwd
时,显示的还是软链接的目录位置
-
-
history
查看已经执行过的历史命令
history 10
:查看最近执行过的10条指令!18
:直接执行历史记录中编号为18的这条指令
时间日期类
-
date
date
:显示当前时间date "%Y"
:显示当前年份date "+%m"
:显示当前月份date "+%d"
:显示当前是哪一天date "+%H"
:显示当前小时date "+%M"
:显示当前分钟date "+%S"
:显示当前秒数
-
date -s 字符串时间
:设置系统日期时间date -s "2020-12-12 11:32:12" # 设置系统时间为2020-12-12 11:32:12
-
cal
显示当前月份日历
cal 2020
:显示2020年一整年的日历
搜索查找类
-
find [搜索范围] [选项]
从指定目录向下递归地遍历各个子目录,将满足条件的文件或者目录显示在终端
选项说明
选项 功能 -name
按照指定的文件名查找模式查找文件 -user
查找属于指定用户名的所有文件 -size
按照指定文件大小查找文件 查找整个Linux系统下大于20M的文件?
find / -size +20M # +表大于、-表小于
-
locate 搜索文件
此指令可以快速的定位文件路径。利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。
由于
locate
指令基于数据库进行查询,所以第一次运行前,必须使用updatedb
指令创建locate数据库若没有此指令则需安装mlocate!
-
grep
&管道符|
grep
过滤查找,|
表示将前一个命令和处理结果输出传递给后面的命令处理grep [选项] 查找内容 原文件
常用选项
-n
:显示匹配行及行号-i
:忽略字母大小写
压缩和解压类
-
gzip
&gunzip
gzip 文件
:压缩成.gz
格式的压缩包当使用
gzip
对文件进行压缩后,不会保留原文件gunzip .gz压缩包
:解压.gz
格式的压缩包 -
zip
&unzip
zip [选项] .zip压缩包名 文件或目录
常用选项
-r
:递归压缩,及压缩目录压缩
/home
目录下所有文件为mypackage.zip
zip -r mypackage.zip /home/
unzip [选项] .zip压缩包
常用选项
-d
:指定压缩后文件的存放目录解压
mypackage.zip
文件到/opt/temp
目录下unzip -d /opt/temp mypackage.zip
-
tar [选项] .tar.gz打包名 文件或目录
选项 功能 -c
产生 .tar
打包文件-v
显示详细信息 -f
指定压缩后的文件名 -z
打包同时压缩 -x
解包 .tar
文件-
压缩多个文件,将
/home
目录下的a1.txt
和a2.txt
压缩成a.tar.gz
tar -zcvf a.tar.gz a1.txt a2.txt
-
将
/home
的文件夹,压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
-
将
a.tar.gz
解压到当前目录tar -zxvf a.tar.gz
-
将
myhome.tar.gz
解压到/opt/tmp2
目录下tar -zxvf myhome.tar.gz -C /opt/tmp2
指定解压路径时,必须保证此目录是存在的,否则会报错
-
组管理和权限管理
文件/目录有3个属性:
- 所有者
- 所属组
- 其它组
查看文件的所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
文件所在组
当一个用户创建了一个文件后,默认这个文件所在的组就是该用户所在的组!
修改文件所在组
chgrp 组名 文件名
其它组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其它组。
权限基本介绍
-rw-rw-r--. 1 tato tato 139 6月 17 21:45 hello.txt
drwxrwxr-x. 2 tato tato 33 6月 17 22:03 aaa
对于上面的-rw-rw-r--
这10个字符所表示的意思:
-
第1个字符:文件的类型。
在Linux系统中,有5种文件类型
-
:表示普通文件d
:表示目录l
:表示软链接c
:表示字符设备,例如键盘,鼠标b
:块文件,例如硬盘
-
第2~4个字符:表示文件所有者拥有的权限
权限说明:
rwx
分别占3个字符位置,若缺少其中的相应的权限则在相应的位置用-
代替,其中如果
rwx
作用到文件上:r
:读权限,可以读取查看w
:写权限,可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录拥有写权限,才能删除该文件!x
:可执行权限如果
rwx
作用到目录上:r
:可以读取,使用ls
查看目录内容w
:可以修改,目录内创建、删除、重命名目录x
:可以进入该目录 -
第5~7个字符:表示文件所属组的用户拥有的权限
-
第8~10个字符:表示文件其它组的用户拥有的权限
对于上面1
这个数字所表示的意思:
如果是文件,那么表示此文件硬链接的数目;如果是目录,则表示该目录下的子目录的数目。
子目录:一个目录下的子目录要包含隐藏目录
.
和..
,其中.
.
:当前目录
..
:上一级目录
对于上面第一个tato
的含义:文件所有者
对于上面第二个tato
的含义:文件所在组
对于上面139
的含义:文件的大小,如果是目录则显示4096
对于上面6月 17 21:45
的含义:文件最后修改的时间
对于上面hello.txt
的含义:文件名
修改权限
chmod
通过chmod
可以修改文件或者目录的权限,有两种方式:
-
第一种方式
u
:所有者;g
:所在组;o
:其它人;a
:所有人(u g o
的总和)使用方式:
chmod u=rwx,g=rx,o=x 文件目录名 chmod o+w 文件目录名 chmod a-x 文件目录名
-
第二种方式
规则:
r = 4, w = 2, x = 1
所以:
chmod u=rwx,g=rx,o=x 目录文件名
相当于chmod 751 目录文件名
修改文件所有者
chown
chown 新的所有者 文件目录名
chown 新的所有者:新的所在组 文件目录名
选项:
-R
:如果是目录,则使目录中所有的目录和文件递归生效。
任务调度crontab
crontab [选项]
常用选项
-e | 编辑crontab 定时任务 |
---|---|
-I | 查询crontab 任务 |
-r | 删除当前用户所有的crontab 任务 |
如果只是简单的任务,可以不用写脚本,直接在crontab
中加入任务即可。对于比较复杂的任务,需要写脚本(shell)。
设置一个进程调度文件/etc/crontab
,要求每分钟执行ls -l /etc/ > /tmp/to.txt
指令
crontab -e
- 写入
*/1 * * * * ls -l /etc/ > /tmp/to.txt
- 当保存退出后,就生效了
- 在每一分钟都会自动的调用
ls -l /etc/ > /tmp/to.txt
参数说明
项目 | 含义 | 范围 |
---|---|---|
第一个* 占位符 | 一小时当中的第几分钟 | 0~59 |
第二个* 占位符 | 一天当中的第几个小时 | 0~23 |
第三个* 占位符 | 一个月当中的第几天 | 1~31 |
第四个* 占位符 | 一年当中的第几个月 | 1~12 |
第五个* 占位符 | 一周当中的星期几 | 0~7(0和7都代表星期日) |
特殊符号说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个* 就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。比如0 8,12,16 * * * ,就代表在每天8点0分,12点0分,16点0分都执行一次指令。 |
- | 代表连续的时间范围。比如0 5 * * 1-6 ,代表在周一到周六的凌晨5点0分执行命令。 |
*/n | 代表每隔多久执行一次。比如*/10 * * * * ,代表每隔10分钟就执行一遍指令。 |
crond
相关指令
crontab -r
:终止任务调度
crontab -l
:列出当前有哪些任务调度
service crond restart
:重启任务调度
Linux磁盘分区、挂载
分区
mbr
分区- 最多只支持四个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
mbr
最大只支持2TB,但拥有最好的兼容性
gtp
分区- 支持无限多个主分区(但操作系统可能有限制,比如Windows下最多128个分区)
- 最大支持18EB的大容量
- Windows7 64位以后支持
gtp
查看系统的分区和挂载情况
lsblk -f
lsblk
为系统添加一块硬盘
-
虚拟机添加硬盘
-
对硬盘进行分区
fdisk /dev/sdb
-
对硬盘进行格式化
mkfs -t ext4 /dev/sdb1
-
挂载
mount /dev/sdb1 /home/newdisk
此时,当系统重启后,挂载关系就会消失,因为这里只是临时挂载!
-
可以设置永久挂载
vim /etc/fstab # 写入: /dev/sdb1 /home/newdisk ext4 default 0 0 # 立即生效 mount -a
此时,重启机器后依然保持着挂载!
/etc/fstab
文件内容
磁盘情况查询
df -h
查询整个系统的磁盘使用情况
du -h 目录
查询指定目录的磁盘占用情况
-s
:指定目录占用大小汇总
-h
:带计量单位
-a
:含文件
--max-depth
:子目录深度
-c
:列出明细的同时,增加汇总值
实用指令
-
统计/home文件夹下文件的个数
ls -l | grep "^-" | wc -l
-
统计/home文件夹下目录的个数
ls -l | grep "^d" | wc -l
-
统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR | grep "^-" | wc -l
-
统计/home文件夹下目录的个数,包括子文件夹里的
ls -lR | grep "^d" | wc -l
-
以树状显示目录结构
tree
没有则使用指令
sudo yum install tree
安装即可
网络配置
指定固定的ip地址
直接修改/etc/sysconfig/network-scripts/ifcfg-xxxx
修改后重启服务即可
service network restart
进程管理
基本介绍
- 在Linux系统中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个id号。
- 每个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如:www服务器。
- 每个进程都可能以两种方式存在:前台和后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
显示系统执行的进程
ps
查看目前系统中有哪些进程正在执行,以及它们的执行情况。
常用选项
-a
:显示当前终端的所有进程信息
-u
:以用户的格式显示进程的信息
-x
:显示后台进程运行的参数
属性介绍
USER
:用户名
PID
:进程id
%CPU
:占用cpu
%MEM
:占用内存
vsz
:使用的虚拟内存
RSS
:使用的物理内存
TTY
:使用的终端
STAT
:进程的状态
S
:睡眠
s
:此进程是会话的先导进程
N
:此进程拥有比普通进程优先级更低的优先级
R
:正在运行
D
:短期等待
T
:被跟踪或者被停止
Z
:僵死进程
START
:启动时间
TIME
:占用cpu总时间
COMMAND
:进程执行时的命令行
查看进程的父进程
ps -ef
PPID
:当前进程的父进程的id号
终止进程
kill [选项] 进程号
通过进程号杀死进程
常用选项
-9
:强迫进程立即停止
killall 进程名称
通过进程名称杀死进程,也支持通配符
使用案例
-
踢掉某个非法登录用户
Jack
- 使用
ps -aux | grep sshd
指令找到Jack
远程连接的进程号xxxx
kill xxxx
- 使用
-
终止远程登录服务sshd,在适当的时候再次重启sshd服务
-
使用
ps -aux | grep sshd
指令找到远程连接sshd
的进程号xxxx
-
kill xxxx
-
service sshd start
启动sshd服务
-
-
终止多个gedit编辑器
killall gedit
-
强制杀掉一个终端
-
ps -aux | grep bash
找到对应的终端进程号 -
kill -9 xxxx
-
进程树pstree
pstree [选项]
可以更加直观的看到进程信息
常用选项
-p
:显示进程的PID
-u
:显示进程的所属用户
服务管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如MySQL,sshd,防火墙等。因此我们又称为守护进程。
service 服务名 [start | stop | restart | reload | status]
在CentOS7.0以后,不再使用service
,而是使用systemctl
查看服务名
方式一:setup -> 系统服务
CentOS下可以使用nmtui
指令
方式二:/etc/init.d/服务名称
服务运行级别
见上***Linux中的7个运行级别***
Linux系统开机流程
- 开机
- BIOS
- /boot
- init进程1
- 运行级别
- 运行级别对应的服务
chkconfig
指令
通过chkconfig
命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法
chkconfig --list | grep xxx
查看服务
chkconfig 服务名 --list
查看某个具体的服务
chkconfig --level 5 服务名 on/off
设置服务在某个级别下的启动和关闭
动态监控进程
top [选项]
top
和ps
命令很相似。它们都是用来显示正在执行的进程。top
与ps
最大的不同在于top
在执行一段时间可以更新正在运行的进程。
选项说明
选项 | 功能 |
---|---|
-d 秒数 | 指定top 每隔几秒更新。默认是3秒在top 命令的交互模式当中可以执行的命令 |
-l | 使top 不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作说明
操作 | 功能 |
---|---|
P | 以cpu使用频率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
监控网络状态
netstat [选项]
选项说明
-an
:按一定顺序排列输出
-p
:显示哪个进程在调用
RPM包和YUM包
RPM包的管理
介绍
一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。它生成具有.rpm
扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写。
查询已安装的RPM列表
rpm -qa | grep xx
其它查询指令
rpm -qa
:查询所有安装的rpm软件包
rpm -qa | more
rpm -qa | grep xx
rpm -q 软件包名
:查询软件包是否安装
rpm -q firefox
rpm -qi 软件包名
:查询软件包信息
rpm -ql 软件包名
:查询软件包中的文件
rpm -qf 文件全路径名
:查询文件所属的软件包
卸载RPM包
rpm -e RPM包名
rpm -e --nodeps RPM包名
:忽略依赖,强制删除
安装RPM包
rpm -ivh RPM包全路径
选项含义
-i
:安装
-v
:提示
-h
:进度条
YUM管理
YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并一次性安装所有依赖软件包。
查询yum服务器是否有需要安装的软件
yum list | grep xxx软件列表
安装指定yum包
yum install xxx包
|
交互操作说明
操作 | 功能 |
---|---|
P | 以cpu使用频率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
监控网络状态
netstat [选项]
选项说明
-an
:按一定顺序排列输出
-p
:显示哪个进程在调用
[外链图片转存中…(img-GSSQk85T-1636175643403)]
RPM包和YUM包
RPM包的管理
介绍
一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。它生成具有.rpm
扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写。
查询已安装的RPM列表
rpm -qa | grep xx
其它查询指令
rpm -qa
:查询所有安装的rpm软件包
rpm -qa | more
rpm -qa | grep xx
rpm -q 软件包名
:查询软件包是否安装
rpm -q firefox
rpm -qi 软件包名
:查询软件包信息
rpm -ql 软件包名
:查询软件包中的文件
rpm -qf 文件全路径名
:查询文件所属的软件包
卸载RPM包
rpm -e RPM包名
rpm -e --nodeps RPM包名
:忽略依赖,强制删除
安装RPM包
rpm -ivh RPM包全路径
选项含义
-i
:安装
-v
:提示
-h
:进度条
YUM管理
YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并一次性安装所有依赖软件包。
查询yum服务器是否有需要安装的软件
yum list | grep xxx软件列表
安装指定yum包
yum install xxx包