文章内容整理自:史上最牛的Linux视频教程—兄弟连,感谢B站up吾方羡_提供的视频资源
文章内容仅供学习,禁止转载或其他用途,侵删。
如果文章内容有问题,欢迎留言交流。
- 视频中使用的系统应该是CentOS6,部分命令和CentOS7及更高版本中可能不同,在学习过程中如果遇到问题,需要自行查询.
- 使用目录或crtl + F 快速找到所需内容
- 文章是基础知识的整理,非初学向,知识点的详细内容请观看视频或csdn
文章目录
- 1.Linux常用命令
- 2. VIM基本操作
- 3. 软件包(施工中)
- 4. 用户配置文件(施工中)
- 更新至此
- **权限管理**
- **文件系统管理**
- Linux 系统管理
- 日志管理
- 启动管理
1.Linux常用命令
1.1文件处理命令
1.1.1命令格式与目录处理命令ls
- 命令格式
命令 [-选项] 参数
- 个别命令使用不遵循此格式
- 多个选项可以写在一起
- 选项分为简化选项与完整选项,效果相同.如:-a 和 --all
- 目录处理命令:ls
#命令格式
ls [-ald] [文件或目录]
命令位置:/bin/ls
常用选项:
- -a:显式所有文件,包括隐藏文件
- -l:显式详细信息
- -d:查看目录属性
- -h:人性化显式
- -i:文件节点号
- 文件信息
[root@localhost ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root 4096 3月 9 17:54 c.d
drwxr-xr-x. 2 root root 70 2月 24 21:44 cpp.d
-rw-r--r--. 1 root root 0 3月 15 16:01 text1
lrwxrwxrwx. 1 root root 5 3月 15 16:17 text1.soft -> text1
-rw-r--r--. 1 root root 0 3月 15 16:01 text2
-rw-r--r--. 1 root root 0 3月 15 16:01 text2
|---------|--|----|-----|---|-------------|-----|
文件信息包含七个字段:
1. 文件类型及文件权限
2. 链接数
3. 所有者
4. 所属组
5. 文件大小
6. 文件最近修改时间
7. 文件名
文件类型(第一个字符):
d:目录 -:普通文件 l:软链接文件 s:套接字文件
文件权限:
rwx r-x r-x
|-u-|-g-|-o-|
u:所有者 g:所属组 o:其他人
r:读权限 w:写权限 x:执行权限
1.1.2目录处理命令(mkdir,cd,pwd,rmdir,cp,mv,rm)
- 目录创建 mkdir
mkdir [-p] [目录名]
命令位置:/bin/mkdir
选项:
- -p:递归创建(允许在一条命令中创建多级目录)
- 目录切换 cd
cd [目录]
命令位置:shell内置命令
- 显示当前目录 pwd
pwd
命令位置:/bin/pwd
- 删除空目录 rmdir
rmdir [目录名]
命令位置:/bin/rmdir
- 复制文件或目录 cp
cp [-rp] [原文件或目录] [目标目录]
命令位置:/bin/cp
常用选项:
- -r:复制目录
- -p:保留文件属性(文件的详细信息(文件修改时间)不变)
- 文件剪切、改名 mv
mv [原文件或目录] [目标目录或新文件名]
命令位置:/bin/mv
- 删除文件 rm
rm -rf [文件或目录]
命令位置:/bin/rm
常用选项:
- -r:删除目录
- -f:强制执行
1.1.3 文件处理命令(touch,cat,tac,more,less,head,tail)
- 创建空文件 touch
touch [文件名]
命令位置:/bin/touch
- 显示文件内容 cat
cat [-n] 文件名
命令位置:/bin/cat
常用选项:
- -n:显示行号
- 反向显示文件内容 tac
tac 文件名
命令位置:/usr/bin/tac
- 分页显示内容 more
more 文件名
命令位置:/bin/more
基本操作:
- (空格)/f 翻页
- (Enter) 换行
- q/Q 退出
- 分页显示文件内容(可以向上翻页) less
less 文件名
命令位置:/usr/bin/less
基本操作:
- (Pageup) 向上翻页
- 上箭头 向上换行
- /(关键词) 搜索关键词
- n 下一个关键词
- 显示文件前几行 head
head [-n] [文件名]
命令位置:/usr/bin/head
常用选项:
- -n 行数: 显示文件前指定行数(默认10行)
- 显示文件后几行 tail
tail [-nf] [文件名]
命令位置:/usr/bin/tail
常用操作:
- -n 行数 指定显示行数
- -f 动态显示文件末尾内容
1.1.4 链接命令(ln)
- 生成链接文件 ln
ln [-s] [原文件] [目标文件]
命令位置:/bin/ln
常用命令:
- -s 创建软连接
软链接:类似于快捷方式
- 文件类型为l
- 文件大小和链接文件大小无关
- 箭头指向原文件 text1.soft -> text1
硬链接:
- 相当于文件拷贝 + 两个文件同步更新
- 通过i节点识别
- 不能跨分区
- 不能对目录使用
1.2 权限管理命令
1.2.1 权限管理命令chmod
- 改变文件或目录权限 chmod
#方法一
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
chmod u+4,g-2,o=1 text1
#方法二
chmod [mode=421] [文件或目录]
chmod 755 text1
命令位置:/bin/chmod
常用命令:
- -R 递归修改
注意: 只有管理员和文件的所有者可以修改文件的权限(拥有执行权限x)
-
文件权限
-rw-r--r--. 1 root root 0 3月 15 16:01 text2 |---------|--|----|-----|---|-------------|-----| 使用数字表示权限:r-4 w-2 x-1 rw-r--r-- ----> 622
文件目录权限总结
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件的内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建,删除文件 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
1.2.2 其他权限管理命令(chown,chgrp,umask)
- 改变文件,目录所有者 chown
chown [用户] [文件或目录]
命令位置:/bin/chown
注意:改变的用户必须存在
- 改变文件,目录的所属组 chgrp
chgrp [用户组] [文件或目录]
命令位置:/bin/chgrp
- 显示,设置文件的缺省权限 umask
umask [-S] #显示默认权限
umask [mode=421] #更改目录的权限
命令位置:shell内置命令
常用选项:
- -S 以rwx形式显示新建文件缺省状态
[root@localhost c.d]# umask -S
u=rwx,g=rx,o=rx
[root@localhost c.d]# touch text3
[root@localhost c.d]# ls -l text3
-rw-r--r--. 1 root root 0 3月 15 17:58 text3
注意:Linux系统中,为安全考虑,默认新建的文件没有可执行(x)权限
[root@localhost c.d]# umask
0022
0022
0 特殊权限
022 --- -w- -w- 反码表示
实际权限需要与 777 相与 得到相应的默认权限
1.3文件搜索命令
1.3.1 文件搜索命令 find
- 文件搜索 find
find [搜索范围] [匹配条件]
----------示例----------
find /etc -name init
#在/etc中查找文件init
find / -size +204800
#在根目录下查找大于100MB的文件
find /home -user YANG_LB
#在根目录下查找指定所有者的文件
find /etc -cmin -5
#在/etc下查找5分钟内被修改过属性的文件和目录
# +5 五分钟外 -5五分钟内
find /etc -size +163840 -a -size -204800
#在/etc下查找大于80MB小于100MB的文件
find /etc -name inittab -exec ls -l {} \;
#在/etc下查找inittab文件并显示其详细信息
命令位置:/bin/find
常用匹配选项:
------------------------------------------------
-name 按名字查找
-iname 名字不区分大小写
------------------------------------------------
-size [+- ]n 按文件大小查找,+n大于 -n小于 n等于
------------------------------------------------
-user 按文件所有者查找
-group 根据所属组查找
------------------------------------------------
-amin [+- ]time 按访问时间查询
-cmin 按文件属性查找
-mmin 按文件内容查找
------------------------------------------------
-a 连接两个匹配条件,两个条件需要同时满足
-o 连接两个匹配条件,两个条件满足一个即可
-exec 命令 {} \; 对搜索结果执行操作
------------------------------------------------
-type 根据文件类型查找
f:文件 d:目录 l:软链接文件
------------------------------------------------
-inum 根据i节点查询
注意:find命令资源占用高,应避开服务器使用高峰使用(尽量少使用)
1.3.2 其他文件搜索命令(locate, which,whereis,grep)
- 在文件资料库中查找文件 locate
locate 文件名
#在文件资料库中查找该文件
updatedb
#更新文件资料库
命令位置:/usr/bin/locate
常用选项:
- -i 名字不区分大小写
*locate搜索速度快于find且系统占用小
**维护的文件资料库的路径(一般为):/var/lib/mlocate/mlocate.db
注意:
- 新建的文件如果没有更新到文件资料库中,则找不到该新文件
- find命令是实时查找,因此没有此问题
- 使用updatedb更新资料库
- 另外在 /tmp 目录下的文件不会被收入文件资料库
- 搜索命令所在的目录及别名信息 which
which 命令
命令位置:/usr/bin/which
- 搜索命令所在的目录及帮助文档路径 whereis
whereis [命令名称]
命令位置:/usr/bin/whereis
- 在文件中搜索子串匹配的行并输出 grep
grep [-iv] [指定字串] [文件]
-----------示例------------
grep -v ^# /etc/inittab
#查看文件中非#开头的行,即查看脚本文件中的有效信息
命令位置:/bin/grep
常用选项:
- -i 不区分大小写
- -v 排除指定字串(反向查找)
1.4 帮助命令(man,whatis,apropos,–help,info,help)
- 获得帮助信息 man
man [命令或配置文件]
----------示例----------
man 5 passwd
#查看passwd配置文件的帮助 1 命令的帮助 5配置文件的帮助
命令位置:/usr/bin/man
注意:
- man后不能加配置文件的绝对路径,否则命令的作用是打开相应文件
- 有些命令的名字存在同名的配置文件,使用man优先查看命令的帮助信息,
- 使用“man 配置文件编号 配置文件“来查看配置文件
- 获得命令的简短帮助信息 whatis
whatis 命令
命令位置:/user/bin/whatis
- 获得配置文件的信息 apropos
apropos 配置文件名称
命令位置:/usr/bin/apropos
- 列出命令的常用选项 --help
命令 --help
- 获得命令的信息 info
info 命令
命令位置:/usr/bin/info
- 获得Shell内置命令的帮助信息
help 命令
命令位置:/usr/share/help
注意:有些命令是Shell内置命令,帮助信息无法使用man查看
1.5 用户管理命令(useradd,passwd,who,w)
- 添加新用户 useradd
useradd 用户名
命令位置:/usr/sbin/useradd
执行权限:root
- 设置用户命令 passwd
passwd 用户名
命令位置:/usr/bin/passwd
- 查看用户登录信息 who
who
命令位置:/usr/bin/who
|-用户名-|---登录终端---|----登录时间(登录地址)------------|
root pts/0 2021-03-17 21:21 (192.168.0.110)
- 查看登录用户的详细信息 w
[root@localhost ~]# w
21:30:53 up 35 min, 3 users, load average: 0.00, 0.01, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 二23 9:49 0.18s 0.18s -bash
root pts/0 192.168.0.110 21:21 5.00s 0.05s 0.02s w
[root@localhost ~]# uptime
21:40:03 up 45 min, 3 users, load average: 0.00, 0.01, 0.05
命令位置:/usr/bin/w
|系统时间|连续运行时间|-当前用户数-|-1分钟,5分钟,15分钟的系统平均负载-|
21:30:53 up 35 min, 3 users, load average: 0.00, 0.01, 0.06
|-用户-|-终端-|------登录地址-------|登录时间|-------|------|-----|---|
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.0.110 21:21 5.00s 0.05s 0.02s w
IDLE:用户登入系统空闲时间
JCPU:该用户累计占用的CPU时间
PCPU:当前操作占用的CPU的时间
WHAT:执行的操作
--使用uptime可以查看w第一行的信息
1.6 压缩解压命令(gzip,tar,bzip2)
压缩/解压缩命令 [选项] [压缩/解锁后文件名] [文件或目录]
文件类型 | 压缩命令 | 解压缩命令 |
---|---|---|
.gz(压缩文件,不保留原文件) | gzip | gunzip, gzip -d |
.tar | tar -cvf | tar -xvf |
.tar.gz | tar -zcf | tar -zxf |
.zip | zip -r | unzip |
.bz2 | bzip2 -k | bunzip2 -k(保留源文件) bzip2 -d |
.tar.bz2 | tar -cjf | tar -xjf |
1. gzip,gunzip:
- gzip只能压缩文件,不能压缩目录
- gzip的压缩不保留原文件
2.tar:打包目录
-选项:
-c 打包
-x 解包
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩/解压缩
-tar -ztvf 文件名 查看文件内容 不解压缩
3.zip:压缩文件或目录
- 选项:
- r 压缩命令
- 可以压缩目录
- 压缩后可以保留原文件
4.baip2:压缩文件
- 选项:
- k 压缩后保留原文件
- 压缩程度高,相比于gzip可以保留原文件
1.7 网络命令(write,wall,ping,ifconfig,mail,last,lastlog,traceroute,netstat,mount)
- 给用户发消息,以ctrl+D保存结束 write
write <用户名>
--------------------------------------
[root@localhost ~]# write yangLB
hello world!
--------------------------------------
[yangLB@localhost ~]$
Message from root@localhost.localdomain on pts/0 at 22:00 ...
hello world!
EOF
命令位置:/usr/bin/write
- 发送广播信息 wall
wall [message]
--------------------------------------
[yangLB@localhost ~]$ wall hello world!
[yangLB@localhost ~]$
Broadcast message from yangLB@localhost.localdomain (pts/2) (Wed Mar 17 22:03:21 2021):
hello world!
命令位置:/usr/bin/wall
- 测试网络连通性 ping
ping [选项] IP地址
命令位置:/bin/ping
常用选项:
- -c 指定发送次数
- 查看和设置网卡信息 ifconfig
ifconfig [网卡名称] [IP地址]
命令位置:/sbin/ifconfig
注意:
- 只输入ifconfig可以查看当前网卡信息
- 查看/发送电子邮件 mail
mail [用户]
命令位置:/bin/mail
基本操作:在邮箱中
- ? 查看帮助
- 序号 查看相应邮件
- h 返回邮件列表
- d 序号 删除邮件
注意:
- 只输入mail查看已收到的邮件
- 邮件输入同样以ctrl+D结尾
- 列出目前与过去登入系统的用户信息 last
last
命令位置:/usr/bin/last
- 查看用户最后登录信息 lastlog
lastlog
命令位置:/usr/bin/lastlog
常用选项:
- -u 使用UID查看特定用户
- 显示数据包到主机间的路径 traceroute
traceroute 网站名/IP
命令位置:/bin/traceroute
- 显示网络相关信息 netstat
netstat [选项]
命令位置:/bin/netstat
常用选项:
- -t TCP协议
- -u UDP协议
- -l 监听
- -r 路由
- -n 显示IP地址和端口号
#netstat -tlun 查看本机监听的端口
#netstat -an 产看本机所有的网络连接
#netstat -rn 查看本机路由表
--TCP协议端口有LISTEN监听 UDP协议的端口没有
- 伪图形界面配置网络 setup
setup
命令位置:/ust/bin/setup
注意:redhat开发的服务,需要自己安装(setuptool)
- 挂载命令 mount
mount [-t 文件系统] 设备文件名 挂载点
------------------------------------
mount -t iso9660 /dev/sr0 /mnt/cdrom
命令位置:/bin/mount
设备文件名:系统默认指定
- /dev/sr0
挂载点:需要自己在mnt目录下创建
- /mnt/cdrom 光盘
-
文件系统:
- iso9660 光盘
注意:
- 已被挂载过的挂载点不能重复挂载,需要卸载后才能再次挂载
- 卸载命令: unmount 挂载点
1.8 关机重启
- shutdown命令
shutdown [选项] [时间]
----------------------------
shutdown -h now #立即关机
常用选项:
- -c 取消前一个关机命令
- -h 关机
- -r 重启
注意:
- shutdown关机更安全,可以正确的关闭保存正在运行的服务和数据
- 其他关机命令
halt
poweroff
init 0
- 其他重启命令
reboot
init 6
- 系统运行级别
0 关机
1 单用户:启动最小服务,用来修复系统
2 不完全多用户,不含NFS服务(network files service):NFS好用但不安全
3 完全多用户
4 未分配
5 图形界面
6 重启
- 修改系统默认运行级别
CentOS6 系统的系统运行级别保存在 /etc/inittab 中可以找到
使用 runlevel 查看当前的运行等级(CentOS7也可以使用)
在CentOS7系统中该文件已经失效,修改该文件不会影响系统的运行级别。
在 /usr/lib/systemd/system/ctrl-alt-del.target 中可以看到,使用 targets 代替了runlevel,使用命令 systemctl get-default 可以查看当前的运行级别。
如果需要修改系统的运行等级使用命令 systemctl set-default TARGET.target,可以将TARGET.target修改为以下的模式。
multi-user.target analogous to runlevel 3
graphical.target analogous to runlevel 5
注意:不要将系统的运行级别修改为0 或6 ,否则系统无法启动(开机即关机或重启)
- 用户退出登录 logout
logout
2. VIM基本操作
命令模式下
--插入命令:--
- a/A 在光标所在字符后/行尾插入
- i/I 在光标所在字符前/行首插入
- o/O 在光标下/光标上插入新行
--定位命令:--
- :set nu 设置行号
- :set nonu 取消行号
- gg/G 到第一行/最后一行
- nG/:n 到第n行
- $/0 移至行尾/行首
--删除命令:--
- x/nx 删除光标所在处/所在处后n个字符
- dd/ndd 删除光标所在/所在后n行
- dG 删除光标所在处到文件尾的内容
- D 删除光标所在处到行尾的内容
-:n1,n2d 删除指定范围的行
--复制和剪切命令:--
- yy/nyy 复制当前/当前以下n行
- dd/ndd 剪切当前/当前以下n行
- p/P 粘贴在当前光标所在行下/行上
--替换和取消命令:--
- r 取代光标所在处字符
- R 从光标所在处开始替换字符,ESC结束
- u 取消上一步操作
--搜索和搜索替换命令
- :/string 搜索指定字符串
- :set ic 搜索时忽略大小写
- n 搜索指定字符串出现的下一个位置
- :%s/old/new/g 全文替换指定字符串
- :n1,n2s/old/new/g 在一定范围内替换指定字符串
--保存和退出命令:--
- :w 保存修改
- :w new_filename 另存为指定文件
- :wq 保存修改并退出
- ZZ 快捷键,保存修改并退出
- :q! 不保存修改退出
- :wq! 保存修改并退出(文件所有者,及root可使用)
-----------------------------
--在vim中执行命令--
:!命令
-----------------------------
-----------------------------
--导入命令执行结果--
:r !命令
例如忘了命令所在的路径,使用":r !man 命令"导入当前位置
-----------------------------
-----------------------------
--定义快捷键--
:map 快捷键 触发命令
例如:
:map ^P I#<ESC> //在行首插入#
--注意:^P由ctrl+V+P组成,<ESC>表示使用ESC键
:map ^B Ox //删除行首第一个字符
-----------------------------
-----------------------------
--连续行注释--
:n1,n2s/^/#/g //n1到n2行注释
:n1,n2s/^#//g //n1到n2行取消注释
注意:^匹配行首
-----------------------------
-----------------------------
--替换--
:ab a b //在文本中将a替换成b
注意:
- 快捷键,ab定义的替换会在系统重启后消失
- vim的配置文件在家目录下的 .vimrc 文件,永久生效需要将有关信息写入文件
-----------------------------
3. 软件包(施工中)
3.1 基本概念
软件包分类
- 源码包:脚本安装包
- 优点:
- 开源,可以修改源代码
- 可以自由选择所需的功能
- 软件由编译安装,更下适合自己的系统,更加稳定高效
- 卸载方便,可以直接将安装所在文件夹删除,不会遗留垃圾文件
- 缺点:
- 安装步骤多,容易出现拼写错误
- 编译过程时间长,笔安装二进制安装时间长
- 编译安装,报错难以解决
- 优点:
- 二进制包:RPM包,系统安装包
- 优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包快得多
- 缺点:
- 看不了源代码
- 功能选择不如源码包灵活
- 需要解决依赖性
- 优点:
3.2RPM包管理—rpm命令管理
3.2.1rpm包命名规则及依赖性
RPM包命名规则
httpd-2.2.15-15.e16.centos.1.i686.rpm
-------------------------------------
httpd 软件包名
2.2.15 软件版本
15 软件发布次数
e16.centos 适合的Linux平台(没写代表适合任意平台)
i686 适合的硬件平台(noarch 任何平台)
rpm rpm扩展名
RPM包依赖性
- 树形依赖:a→b→c
- 环形依赖:a→b→c→a
- 模块依赖:模块依赖查询网站:www.rpmfind.net
3.2.2 安装、升级与卸载
包全名与包名
- 包全名:操作的包是没有安装的软件包时,使用包全名。而且注意路径。
- 包名:操作已经安装的软件包时,使用包名。(使用包名其实是搜索/var/lib/rpm/中的数据库)。
RPM安装
rpm -ivh 包全名
----------------------
-i 安装(install)
-v 显示详细信息(verbose)
-h 显示进度(hash)
--nodeps 不检测依赖性
RPM包升级
rpm -Uvh 包全名(新版本的包)
----------------------
-U 升级(update)
RPM包卸载
rpm -e 包名
----------------------
-e 卸载(erase)
--nodeps 不检测依赖性
3.2.3 查询
查询是否安装
rpm -q 包名
rpm -qa
----------------------
-q 查询(query)
-a 所有(all)
查询软件包详细信息
rpm -qi 包名
rpm -qip 包全名
----------------------
-i 查询软件信息(information)
-p 查询未安装包信息(package)
查询包中文件安装位置
rpm -ql 包名
rpm -qlp 包全名
----------------------
-l 列表(list)
-p 查询未安装包信息(package):打算把文件装哪
查询系统文件属于哪个rpm包
rpm -qf 系统文件名
----------------------
-f 查询系统文件属于哪个软件包
注意:如果不是通过软件包安装得到的文件,如产生的临时文件,无法查询属于哪个软件包
查询依赖性
rpm -qR 包名
rpm -qRp 包全名
----------------------
-R 查询软件包的依赖性(requires)
3.2.4 RPM包校验
rpm -V 已安装的包名
----------------------
-V 校验指定RPM包中的文件(verify)
使用该命令无任何显示表明没有被修改过
如果修改过,可能显示以下内容:
S.5....T. c /etc/httpd/conf/httpd.conf
|-验证内容-|--|----------文件路径--------|
文件类型
RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
----------------------
-i -i(copy-in模式,还原)
-d 还原时自动新建目录
-v 显示还原过程
rpm2cpio 将rpm包转换为cpio格式的命令
cpio 标准工具,用于创建软件档案文件和从档案文件中提取文件
3.3RPM包管理—yum在线管理
3.3.1 IP地址配置和网络yum源
→解决模块依赖
- 网络yum源:/etc/yum.repos.d/CentOS-Base.repo
3.3.2 yum命令
- 查询:服务器可用软件包:yum list, yum search 关键字
- 安装:yum -y install 包名 -y 自动回答yes
- 升级:yum -y update 包名 (没有包名升级所有软件包)
- 卸载:yum -y remove 包名
- yum软件组管理命令:
- 所有可用的软件组列表:yum grouplist
- 安装软件包组:yum groupinstall 软件组名
- 卸载软件包组:yum groupremove 软件组名
3.3.3 光盘yum源搭建
- 光盘yum源搭建
- 挂载光盘:mount /dev/sr0 /mnt/cdrom
- 让网路yum源失效:CentOS-Media.repo生效
- 改后缀名改为非repo
- 修改光盘为yum源文件:修改baseurl为光盘挂载目录,配置文件格式不能修改
源码包和RPM包的区别
-
rpm包安装位置
-
源码包安装位置:/usr/local/软件包/
-
不同安装位置的影响:
- rpm可以使用系统服务管理命令来管理
- /etc/rc.d/init.d/httpd start
- service httpd start
- systemctl start httpd
- rpm可以使用系统服务管理命令来管理
源码包安装
- 源代码保存位置 usr/local/src
- 软件安装位置 /usr/local
- ./configure 软件配置与检查
- 定义需要的功能选项:
- 检测系统环境是否符合安装要求
- 将定义好的功能选项和检测系统的环境的信息都写入Makefile文件,用于后续的编辑
4. 用户配置文件(施工中)
4.1 用户配置文件
4.1.1 用户信息文件 /etc/passwd
Linux中主要通过用户配置文件来查看和修改用户信息,使用 “man 5 passwd" 可查看passwd文件的描述信息
NAME
passwd - password file
name:password:UID:GID:GECOS:directory:shell
# root:x :0 :0 :root :/root :/bin/bash
FILES
/etc/passwd
-----------------------------------------------
第1字段:用户名称
第2字段:密码标志(x 存放在/etc/shadow下)
第3字段:UID
- 0: 超级用户
- 1-499: 系统用户(伪用户)
- 500-65535:普通用户
第4字段:GID(用户初始组)
第5字段:用户说明
第6字段:家目录
-超级用户:/root/
-普通用户:/home/用户名
第7字段:登录之后使用的shell
初始组和附加组
- 初始组:用户一登陆就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
- 附加组:用户可以加入多个其他的用户组,并且拥有该附加组的权限,附加组可以拥有多个。
4.1.2影子文件/etc/shadow(时间戳换算)
vi /etc/shadow
yanglb : !! : 18710 : 0 : 99999 : 7 : : :
|---1---|--2---|---3-----|-4--|---5---|-6-|7|8|9|
第1字段:用户名
第2字段:加密密码
一般使用SHA512加密,!!或*表示没有密码不能登录
第3字段:密码修改时间
从1970.1.1以来的天数
第4字段:密码修改间隔
第5字段:密码有效期
第6字段:密码过期警告时间
第7字段:密码过期后宽限时间
-1表示密码不会失效;0代表过期后立即失效
第8字段:账号失效时间
使用时间戳表示
第9字段:保留
时间戳变换
- 将时间戳换算成日期:
- date -d “1970-01-1 时间戳 days”
- 将日期换算成时间戳:
- echo ( ( (( (((date --date=“2014/1/6” +%s)/86400+1))
4.1.3 组信息文件 /etc/group和组密码文件/etc/gshadow
组信息文件 /etc/group
root : x : 0 :
|--1--|--2--|--3--|--4--|
第1字段:用户名
第2字段:组密码标志
第3字段:GID
第4字段:组中附加用户
查看用户的初始组:/etc/group中保存的信息是组的信息,不是用户的组的信息。如果想查看用户的初始组,只能在/etc/passwd下找到用户的GID,然后从/etc/group文件中找到对应的组。
组密码文件: /etc/gshadow
root : : :
|--1--|--2--|--3--|--4--|
第1字段:用户名
第2字段:组密码
第3字段:组管理员用户名
第4字段:组中附加用户
更新至此
用户管理相关文件
- 用户家目录:普通用户/home下700 root /root 550
- 用户的邮箱:/var/spoo/mail/用户名
- 用户模板目录:/etc/skel
用户管理命令
-
用户添加命令 useradd
- -u UID -d 家目录 -c 用户说明 -g 组名 -G指定用户的附加组 -s shell 指定用户登录的shell
- 用户默认文件
-
/etc/default/useradd
-
/etc/login.defs
-
-
修改用户密码 passwd
-
-S 查询用户密码的密码状态(root可用)-l 暂时锁定用户(root)-u解锁用户(root)
-
- -stdin 可以用管道符输出的数据作为用户的密码
-
-
修改用户信息 usermod
- -c 用户说明 -u UID -G 附加组 -L 临时锁定用户 -U 解锁用户锁定
-
修改用户状态chage
- -l :列出用户的详细密码状态 -d 日期:密码最后以此修改日期(3字段)
- -m 天数:间隔(4)-M 天数:密码有效期(5)-W 天数:警告(6)
- -I 天数 :宽限(7)-E 日期 :失效(8)
- 要求新用户登录后立即修改密码:chage -d 0 用户
-
删除用户 userdel
-
-r 用户名:删除用户的同时删除家目录
![]](https://img-blog.csdnimg.cn/20210315181617527.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lhbmdKSzg2,size_16,color_FFFFFF,t_70) -
id 用户名 :查看用户ID
-
-
用户切换命令 su
- env 查看当前环境
- su - 用户:切换用户时切换环境
- su -c 命令:仅执行以此命令,而不切换用户身份
-
用户组命令
- 添加用户组 groupadd -g GID :指定用户组ID
- 修改用户组 groupmod -g GID -n 名字
- 删除用户组 groupdel 组名(不允许有初始用户)
- gpasswd 选项 组名
- -a 用户:添加用户进组
- -d 用户:删除用户出组
权限管理
ACL权限:
-
查看分区ACL权限是否开启:dumpe2fs -h 分区
-
临时开启分区ACL权限:mount -o remount ,acl /
-
永久开启分区ACL权限:vi /etc/fstab 加入 ,acl
mount -o remount 重新挂载
查看与设定ACL权限
- 查看ACL命令 getfacl 文件名
- 设定ACL权限 setfacl 选项 文件名
- -m 设定ACL权限
- 给用户设定ACL权限
- 给用户组设定ACL权限
最大有效权限与删除ACL权限
- 最大有效权限:mask 赋予的ACL权限与mask相与得到真正的权限
- 删除ACL权限:setfacl -x 用户/用户组 -b 文件
默认与递归ACL权限
- 递归ACL权限:setfacl -m u:用户名:权限 -R 文件名
- 默认ACL权限:setfacl -m d:u:用户名:权限 文件名
文件特殊权限
- SetUID
-
功能:可执行的二进制程序,命令执行者拥有x权限,命令执行者在执行文件时拥有属主身份,SetUID权限只在该程序执行过程中有效
chmod 4755 abc
chmod u+s abc
![]](https://img-blog.csdnimg.cn/20210315181643819.png)大写S表示错误
-
- SetGID
-
对文件:可执行二进制文件,执行者拥有执行权限,执行时升级为该文件的所属组,执行过程中生效
-
对目录:普通用户对目录拥有r和x权限才能进入目录,进入后变为此目录的属组,对目录有w权限时,新建文件的数组是该目录的属组
-
chmod 2755 /tmp/test 4:suid 2:sgid 1:sbit
chmod g+s /tmp/test
-
- Sticky Bit
- 对目录有效,普通用户对该目录有w和x权限(写权限)
- 没有粘着位用户可以删除目录下的所有文件,有粘着位只能删除自己创建的文件,不能删除其他用户建立的文件
- chmod 1755 目录 chmod o+t 目录
- chmod 777 目录 chmod o-t 目录
文件系统属性chattr权限
- chattr [±=][选项] 文件或目录名
- i 文件:不允许修改,删除,重命名 目录:允许修改文件,不允许删除建立文件
- a 文件:只能在文件中增加数据,不能删除或修改 目录:增加或修改文件, 不允许删除数据
- 查看文件系统属性 lsattr 选项 文件名
- -a 显示所有文件和目录 -d 文件为目录则只列出自身属性
sudo权限
-
sudo权限:操作对象是系统命令
- root把本来只能超级用户执行的命令赋予普通用户执行
-
visudo (修改的是/etc/sudoers文件)
-
授权sc用户重启服务器:
- sc ALL=/sbin/shutdown -r now
-
普通用户执行sudo赋予的命令
- 查看被赋予的命令 sudo -l
- 执行:sudo /sbin/shutdown -r now 命令的绝对路径
文件系统管理
-
分区类型:
- 主分区(最多四个)sda1,2,3
- 扩展分区(只能有一个,加主分区一共四个),不能存储数据或格式化,只能划分逻辑分区 sda4
- 逻辑分区:在扩展分区中划分,IDE硬盘59个 SCSI硬盘11个 sda5,6,7………
-
文件系统:ext
- ext2:最大16TB分区 2TB文件
- ext3:新增日志功能
- ext4:最大1EB分区 16TB文件
文件系统常用命令
- df [选项] [挂载点]
- -a 显示所有的文件系统信息,包含特殊:proc sysfs
- -h 人性化显示 -m mb为容量显示 -k kb为容量显示(默认)
- -T 显示文件系统类型
- du [选项] [目录文件名]
-
-a 显示每个子文件,默认只统计子目录的磁盘占用量
-
-s 统计总占用,而不列出子目录和子文件
-
-h
-
df 考虑文件系统,除文件占用空间外,还考虑程序和命令
du只统计文件和目录占用的空间
-
- 文件系统修复命令 fsck [选项] 分区设备文件名
- -a 不显示提示,自动修复文件系统 -y
- 显示磁盘状态命令 dumpe2fs 分区设备文件名
挂载命令
- 查询与自动挂载
- mount [-l] 查询系统中已经挂载的设备,-l显示卷标名称
- mount -a 根据配置文件/etc/fstab的内容,自动挂载
- 挂载命令格式
- mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
- 文件系统 光驱iso9660 硬盘,分区ext3,ext4
- 卷标名:挂载指定卷标的分区
- 特殊选项
挂载光盘和U盘
- 挂载光盘:
- mkdir /mnt/cdrom
- mount -t iso9600 /dev/cdrom /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
- 卸载光盘
- umount 设备文件名或挂载点 (取消挂载之前,退出挂载目录)
- 挂载U盘
- fdisk -l 查看U盘身背文件名
mount -t vfat*(FAT32)* /dev/sdb1 /mnt/usb - Linux默认不支持NTFS文件系统
- fdisk -l 查看U盘身背文件名
- 支持NTFS文件系统
- 安装ntfs驱动:ntfs-3g ./configure&&make&&make install
- 挂载:mount -t ntfs-3g /dev/sdb1 /mnt/usb
- 卸载:umount /dev/sdb1
fdisk分区
-
查看新硬盘 fdisk -l
-
使用fdisk命令分区 fdisk /dev/sdb 未分区因此只能创建sdb,没有数字
成功提示
-
重新读取分区表信息 partprobe
-
格式化分区 mkfs -t ext4 /dev/sdb1 (不能格式化扩展分区)
-
建立挂载点并挂载:
mkdir /disk1
mount /dev/sdb1 /disk1 -
fdisk 只能查看分区是否正常分配 mount和df可以查看分区的挂载点
重启后分区挂载失效 需要写入文件 -
分区自动挂载
-
写入/etc/fstab文件
-
查看磁盘分区编号UUID :dumpe2fs 分区名
-
分区备份文件, 分区挂载目录下 lost+found
-
修改fstab后使用 mount -a 自动挂载一遍,防止写错,导致系统重启后崩溃
-
-
fstab文件自动修复
- fstab文件写错后,重新启动会导致问题,再次编辑fstab时无法修改,挂载为只读
- 使用mount -o remount,rw / 命令重新挂载为读写权限后可以修改
- 该命令只能修复fstab文件
-
分配swap交换分区
-
free 查看内存与swap的使用情况
-
新建swap分区 mkfs /dev/sdb
-
修改id类型为82
-
保存退出 partprobe或重启更新分区表
-
格式化 mkswap /dev/sdb6
-
加入swap分区 swapon /dev/sdb6
取消swap分区 swapoff /dev/sdb6 -
添加swap分区成功
-
开机自动挂载 修改/etc/fstab
-
Linux 服务管理
服务简介与分类
-
服务的分类
- 启动与自启动
- 服务启动:在当前系统中让服务运行并提供功能
- 服务自启动:让服务在系统开机或重启后随着系统的启动而自动启动
- 查询已安装的服务
- RPM包安装的服务: chkconfig – – list
- 源码包安装的服务,一般在/usr/local下
- rpm安装服务和源码包安装服务的区别
- 安装位置不同:源码包安装在指定位置,一般是/usr/local
- rmp包安装在默认位置
- /etc/rc.d/init.d rpm包的启动位置 使用service systemctl命令可以直接控制
- 启动与自启动
RPM包安装服务的管理
-
独立服务的管理
- rpm包安装位置
- /etc/init.d/:启动脚本位置
- /etc/sysconfig/:初始化环境配置文件位置
- /etc/:配置文件位置
- /etc/xinetd.conf:xinetd配置文件
- /etc/xinetd.d/:基于xinetd服务的启动脚本
- /var/lib/:服务产生的数据存放
- /var/log/:日志
- 独立服务的启动
- /etc/init.d/独立服务名 start|stop|status|restart|
- service 独立服务名 start|stop|status|restart|
- systemctl start|stop|status|restart| 独立服务名
- 独立服务自启动
- chkconfig [- - level 运行级别] [独立服务名] [on|off](systemctl)不支持源码包服务
- 修改 /etc/rc.d/rc.local 文件 (推荐方法)
- 使用ntsyssv命令管理自启动 不支持源码包服务
- rpm包安装位置
-
基于xinetd的管理
-
安装xinetd与telnet
- yum -y install xinetd
- yum -y install telnet-server
-
xinetd服务的启动
![]](https://img-blog.csdnimg.cn/20210315182114484.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lhbmdKSzg2,size_16,color_FFFFFF,t_70) -
重启xinetd服务
-
xinetd自启动
-
chkconfig telnet on
-
ntsysv
-
源码包安装服务的管理
-
源码包安装服务的启动
- 使用绝对路径,调用脚本来启动。不同的源码包的启动脚本不同。可以查看源码包的安装说明,查看启动脚本的方法
-
源码包的自启动
-
在/etc/rc.d/rc.local 中 加入 启动命令 /usr/local/apache2/bin/apachect start
-
让源码包的apache服务能被chkconfig与ntsysv命令管理自启动
-
vi /etc/init.d/apache 添加
-
#chkchonfig 35 86 76
#指定hettpd脚本可以被chkconfig命令管理。格式是:chkconfig 运行级别 启动顺序 关闭顺序注意 启动顺序 关闭顺序 与已有的服务不能重复
查看启动顺序和关闭顺序 在 /etc/rc.d/rc[0-6].d下
-
#descripttion: source package apache
#说明,内容随意 -
chkconfig - - add apache 增加到chkconfig中
-
-
-
Linux 系统管理
进程管理
-
进程查看
-
进程:每一个进程是一个运行的实体,拥有自己的地址空间,并占用一定的资源
-
进程管理的作用:判断服务器的健康状态,查看系统中所有进程,杀死进程
-
查看系统中所有进程:
- ps aux:查看系统中所有进程,使用BSD操作系统格式
- -a 前台 -x 后台 -u 产生用户
- ps -ls:查看系统中所有进程,使用Linux标准命令格式
- -l 详细信息 -e 所有进程
- ps aux:查看系统中所有进程,使用BSD操作系统格式
-
查看系统健康
- top [选项]
- -d 秒数: 指定top命令更新的间隔
- 在交互模式中可以执行的命令
- ?或 h:显示帮助
- P:以CPU使用率排序,默认此选项
- M:内存使用率排序
- N:以PID排序
- q:退出
- top [选项]
-
-
查看进程树 pstree [选项]
- -p:显示进程的PID
- -u:显示进程所属的用户
-
进程管理
-
kill -l 查看可用的进程信号
-
重启进程 kill -1 PID
-
强制杀死进程 kill -9 PID
-
killall命令: killall [选项] [信号] 进程名
- -i:交互式,询问是否要杀死某个进程
- -I:忽略进程名的大小写
-
pkill命令:pkil [选项] [信号] 进程名
- -t 终端号:按照终端号提出用户
-
工作管理
-
把进程放入后台
-
在命令执行的过程中按下 ctrl+z
在后台暂停 -
tar -zcf etc.tar.gz /etc & 在命令之后加&
在后台运行
-
-
查看后台的工作
- jobs [-l]
- -l:显示工作的PID
- + 号代表最近一个放入后台的工作,也是恢复时默认恢复的工作
- 号代表倒数第二个放入后台的工作
- jobs [-l]
-
将后台暂停的工作恢复到前台执行
- fg %工作号(%可以省略,工作好不是PID)
-
将后台暂停的工作恢复到后台执行
- bg %工作号
后台恢复的执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
系统资源查看
-
vmstat命令监控系统资源
- vmstat [刷新时延 刷新次数]
- vmstat [刷新时延 刷新次数]
-
dmesg开机时内核信息检测
-
free命令查看内存使用状态
- free [-b -k -m -g -h] 不同单位显示 默认是KB
- 缓冲和缓存
- 缓存用来加速数据从硬盘中读取, 缓冲用来加速数据写入硬盘
-
查看CPU信息
- cat /proc/cpuinfo
- dmesg | grep CPU
-
uptime:显示系统的启动时间和平均负载 top的第一行 w也可以看到
-
查看系统与内核相关信息
- uname [选项]
- -a:查看系统所有相关信息
- -r:查看内核版本
- -s:查看内核名称
- uname [选项]
-
判断当前系统的位数
- file /bin/ls 使用file查看系统外部命令文件的信息 可以间接查看
- file /bin/ls 使用file查看系统外部命令文件的信息 可以间接查看
-
查询当前Linux系统的发行版本
- lsb_release -a (安装 redhat-lsb)
-
列出进程打开或使用的文件信息
- lsof [选项]
- -c 字符串:只列出以字符串开头的进程打开的文件
- -u 用户名:只列出在某个用户的进程打开的文件
- -p pid:列出某个PID进程打开的文件
- lsof [选项]
系统定时任务
-
crond服务管理与访问控制
- service crond restart
- chkconfig crond on
- crond一般默认启动
-
用户的crontab设置
-
crontab [选项]
- -e:编辑crontab定时任务
- -l:查询crontab任务
- -r:删除当前用户所有的crontab任务
-
crontab -e 进入crontab编辑界面
***** 执行的任务
-
在定时任务执行的脚本中,如果出现%,前边需要使用转义符,%在crontab中有特殊含义 date=$(date +%y%m%d)
日志管理
日志管理简介
-
rsyslogd的新特点:
- 基于TCP网络协议传输日志信息
- 更安全的网络传输方式
- 有日志消息的即使分析框架
- 后台数据库
- 配置文件中可以写简单的逻辑判断
- 与syslog配置文件相兼容
-
确定服务自启动
ps aux | grep rsyslogd
systemctl list-unit-files | grep rsyslog
-
常见日志的作用
lastb—btmp lastlog—lastlog last—wtmp w who users—utmp
- 除了系统默认日志之外,采用rpm方式安装的系统服务也会默认将日志记录在/var/log中
但是这些日志不是由rsyslogd服务来记录管理,而是服务自己管理
rsyslogd日志服务
-
日志文件格式
-
基本日志格式包含一下四列
- 事件发生的时间
- 发生时间的服务器的主机名
- 产生时间的服务名或程序名
- 时间的具体信息
-
-
/etc/rsyslog.conf配置文件 记录 记录日志文件的 配置信息
-
authpriv.* /var/log/secure
#服务名称 [连接符号] 日志等级 日志记录位置
#认证相关服务 . 所有日志等级 记录在/var/log/secure日志中
-
服务名称
-
连接符号
-
日志等级
-
日志记录位置
- 日志文件的绝对路径:/var/log/secure
- 系统设备文件:/dev/lp0
- 转发给远程主机:192.168.0.210:514
- 用户名:root *(全部用户)
- 忽略或丢弃日志:~
-
日志轮替
-
日志文件的命名规则
- -
logrotate配置文件 /etc/logrotate.conf
-
把apache日志加入轮替文件(源码包安装)
-
logrotate命令
- logrotate [选项] 配置文件名
- 没有选项,按照配置文件中的条件进行日志轮替
- -v:显示日志轮替过程,
- -f:强制进行日志轮替
- logrotate [选项] 配置文件名
启动管理
-
CentOS6.3启动管理
-
系统运行级别
-
-
runlevel 查看运行级别
前面的数代表之前的运行级别,后边的数代表当前的运行级别
-
init 运行级别:改变运行级别
-
系统默认运行级别:/etc/inittab
-
-
系统启动过程
-
最小化安装linux
bash-completion | tab补全 |
net-tools | 网络工具 ifconfig route arp netstat |
vim | |
gcc | |
httpd | apache |
firewalld | 防火墙 |
wget | |
mysql | |
chrony(centos8) | |
nmap | 远程扫描服务 |
apache问题:
主机和虚拟及可以ping通,但是无法访问80端口
设置Linux的防火墙中可以访问的端口 firewall-cmd - - list-ports