Linux(ubuntu)内容整理(常用命令)
1. 基础快捷键
命令 | 含义 |
---|---|
ctrl+c | 强制停止 |
ctrl+d | 退出登出 |
histroy | 查看历史命令 |
!命令前缀 | 自动匹配上一个命令 |
ctrl+r | 搜索历史命令 |
ctrl+a|e | 光标移动到命令开始或结束 |
ctrl+箭头 | 左右跳单词 |
ctrl+l 或 clear | 清屏 |
2 系统分区
2.1 磁盘分区
磁盘分区是使用分区编辑器,在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。
分区类型:
- 主分区:最多只能有4个。
- 扩展分区:
- 最多只能有1个。
- 主分区加扩展分区最多有4个。
- 不能写入数据,只能包含逻辑分区
- 逻辑分区:可以正常的写入数据和格式化
2.2 格式化
格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16,FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
2.3 硬件设备文件名
设备文件名
- /dev/hdal(IDE硬盘接口)
- /dev/sda1(SCSI硬盘接口、SATA硬盘接口)
2.4 挂载
必须分区:
- /(根分区)
- swap分区(交换分区,内存2倍,不超过2GB)ap分区,即交换区,系统在物理内存(这里应该是运行内存)不够时,与Swap进行交换。 Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
推荐分区:
- /boot(启动分区,200MB)
)]
2.5 总结
- 分区:把大硬盘分为小的逻辑分区
- 格式化:写入文件系统
- 分区设备文件名:给每个分区定义设备文件名
- 挂载:给每个分区分配挂载点
3 给Linux初学者的建议
3.1 注意事项
Linux严格区分大小写
Linux中所有内容以文件形式保存,包括硬件
硬盘文件是/dev/sd[a-p]
光盘文件时/dev/sr0等
Linux不靠扩展名区分文件类型
- 压缩包:“*.gz”、“*.bz2”、“*.tar.bz2”、“*.tgz”等
- 二进制软件包:“.rpm”
- 网页文件:“*.html”、“*php”
- 脚本文件:“*.sh”
- 配置文件:“*.conf”
Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘
Windows下的程序不能直接在Linux中安装和运行
Linux各目录的作用
3.2 服务器注意事项和维护建议
- 远程服务器不允许关机,只能重启
- 重启时应该关闭服务
- 不要在服务器访问高峰运行高负载命令
- 远程配置防火墙时不要把自己踢出服务器
- 制定合理的密码规范并定期更新
- 合理分配权限
- 定期备份重要数据和日志
4 Linux常用命令
4.1 文件处理命令
4.1.1 命令格式与目录处理命令ls
命令[-选项][参数]
例:ls -la /etc
说明:
1)个别命令使用不遵循此格式
2)当有多个选项时,可以写在一起
3)简化选项与完整选项(-a等于all)
命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls选项[-ald][文件或目录]
-a 显示所有文件,包括隐藏文件 all
-l 详细信息显示 long
-d 查看目录属性
-i i节点
ls -l命令解读
-rw-r–r-------- 1 root root 1205 3月 3 08:10 anaconda3
1表示使用次数
所有者(一个用户) 所属组、 其他人 :<=三种关系
root(第一个):所有者
root(第二个):所属组
1205文件大小,默认单位字节 -lh人性化显示
3月 3 最后一次修改时间, Linux没有创建时间,有文件最后一次访问时间,文件状态修改时间,文件数据修改时间,如果没有改过就是创建时间。
anaconda3 文件名
-rw-r–r–
-文件类型 二进制文件
d 目录 l 软链接文件
u 所有者 g所属组 o其他人(对应rw-r–r–)
r读 w写 x执行
4.1.2 目录处理命令
命令名称:mkdir
命令英文原意:make directories
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p[目录名]
功能描述:创建新目录
-p 递归创建
范例:$mkdir -p /tmp/Japan/boduo
$mkdir /tmp/Japan/longze /tmp/Japan/cangjing
目录处理命令:cd
命令英文原意:change directory
命令所在路径:shell内置命令
执行权限:所有用户
语法:cd【目录】
功能描述:切换目录
范例:$ cd /tmp/Japan/boduo 切换到指定目录
$ cd … 回到上一级目录(注意空格)
目录处理命令:pwd
命令英文原意:print working directory
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
功能描述:显示当前目录
范例:$ pwd
命令名称:rmdir
命令英文原意:remove empty directories
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir [目录名]
功能描述:删除空目录
范例:$rmdir -p /tmp/Japan/boduo
命令名称:cp
命令英文原意:copy
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp[原文件或目录][目标目录]
-r 复制目录
-p 保留文件属性
功能描述:复制文件或目录(可以同时复制多个)
范例:$cp -r /tmp/Japan/boduo
$mkdir /tmp/Japan/longze /tmp/Japan/cangjing
命令名称:mv
命令英文原意:move
命令所在路径:/bin/mv
执行权限:所有用户
语法:mv[原文件或目录][目标目录]
功能描述:剪切文件、改名
命令名称:rm
命令英文原意:remove
命令所在路径:/bin/rm
执行权限:所有用户
语法:rm -rf[文件或目录]
-r 删除目录
-f 强制执行
功能描述:删除文件
清屏:ctrl+l 或者clear
/longze /tmp/Japan/cangjing
4.1.3 文件处理命令
命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
语法:touch[文件名]
功能描述:创建空文件(若有空格用""括起来,不建议使用)
范例:$ touch Japanlovestory.list
/longze /tmp/Japan/cangjing
命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat[文件名]
功能描述:显示文件内容
-n 显示行号
范例:$cat /etc/issue
$cat -n /etc/services
命令名称:tac
命令所在路径:/usr/bin/tac
执行权限:所有用户
语法:tac[文件名]
功能描述:显示文件内容(反向列示)
范例:$tac /etc/issue
命令名称:more
命令所在路径:/bin/more
执行权限:所有用户
语法:more[文件名]
b 向上翻页
(空格)或f 翻页
(enter) 换行
(q或Q) 退出
h 帮助
功能描述:分页显示文件内容
范例:$more /etc/services
命令名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
语法:less[文件名]
功能描述:分页显示文件内容
在more基础上,增加搜索功能:/[关键词]
N搜索关键词下移
范例:$less /etc/services
命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head[文件名]
功能描述:显示文件前面几行
-n 指定行数(默认10行)
范例:$head -n 20 /etc/services
命令名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法:head[文件名]
功能描述:显示文件后面几行
-n 指定行数
-f 动态显示文件
范例:$tail -n 20 /etc/services
4.1.4 链接命令
命令名称:ln
命令英文原意:link
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件][目标文件]
-s 创建软链接
功能描述:生成链接文件
范例:$ln -s /etc/issue /tmp/issue.soft //软链接
$ln /etc/issue /tmp/issue.hard //硬链接
软链接:类似Windows快捷方式
特点:
- l开头
- rwxrwxrwx
- 内存占用非常小(windows快捷方式)
- ->
硬链接:类似深拷贝复制(地址复制)
特点:
同步更新(i节点相同,另一个文件删除,不会删除本文件)
通过i节点识别
与软链接区别:
不能跨分区(C盘和D盘的区别)
不能针对目录使用
4.2 权限管理命令
4.2.1 权限管理命令chmod
命令名称:chmod
命令英文原意:change the permisiions mode of a file
命令所在路径:/bin/chomd
执行权限:所有用户
语法:chmod[{ugoa}{±=}{rwx}] \\u:所有者 g:所属组 o:其他人 a:所有人 +:增加 -:减少 =赋值
[文件或目录][mode=421][文件或目录] \\r:4 w:2 x:1
-R 递归修改 \\更改目录下所有权限
注:多个授权,逗号分开
功能描述:修改权限
范例:$chmod u+x /tmp/Jpan/a
$chmod u-w,u-x /tmp/Jpan/a
$chmod 764 /tmp/Jpan/a
- 目录权限决定文件的操作
- 文件权限决定文件本身的操作
删除文件需要对目录有写权限,而不是文件本身,文件本身的写权限只表示修改文件里面的内容
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
file:
r:cat/more.head/tail/less
w:vim
x: script command
directory
r: ls
w: touch/mkdir/rmir/rm
x: cd
4.2.2 其他权限管理命令
命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
语法:chown[用户][文件或目录]
功能描述:改变文件或目录的所有者
范例:$chown shenchao fengjie
//改变文件fengjie的所有者为shenchao
命令名称:chgrp
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp[用户][文件或目录]
功能描述:改变文件或目录的所属组
范例:$chgrp shenchao fengjie
//改变文件fengjie的所属组为shenchao
命令名称:umask
命令英文原意:the user file-creation mask
命令所在路径:Shell内置命令
执行权限:所有用户
语法:umask[-S]
-S 以rwx形式显示新建文件缺省权限
功能描述:显示、设置文件的缺省权限
范例:$umask -S
注:文件创建的权限默认比目录权限少x
0 特殊权限
022 所有者 所属组 其他人
777 rwx rwx rwx
022 — -w- -w-
755 rwx r-x r-x 目录
rw- r-- r-- 文件
4.3 文件搜索命令
4.3.1 文件搜索命令
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find[搜索范围][匹配条件]
功能描述:文件搜索(精准搜索)
范例:$find /etc -name init
\\在目录/etc中查找文件init
$find /etc -name *init*
\\*匹配多个字符,与Windows默认查找相同
\\?匹配单个字符
\\-iname 不区分大小写
$find / -size +204800
\\在根目录下查找大于100MB的文件 +n 对于 -n 小于 n 等于 1数据库=512字节=0.5k
$ find /home -user shenchao // group所属组
$ find /home -user shenchao
\\在根目录下查找所有者为shenchao的文件
$find /etc -cmin -5
\\在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
$find /etc -size +163840 -a -size -204800
\\在/etc下查找大于80MB小于100MB的文件
-a 两个条件同时满足
-o 两个条件满足任意一个即可
$ find /etc -name inittab -exec ls -l{};
\\在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令{}; 对搜索结果执行操作 ok会询问
-type 根据文件类型查找 f文件 d目录 l软链接文件
-inum 根据i节点查找
4.3.2 其他搜索命令
类似everything 工具类似
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate[文件名]
功能描述:在文件资料库中查找文件
范例:$locate inittab
locate更新方式:sudo updatedb
locate无法查/etc下内容
-i 不区分大小写
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which命令
功能描述:搜索命令所在目录及别名信息
范例:$which ls
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis[命令名称]
功能描述:搜索命令所在目录及帮助文档路径
范例:$whereis ls
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv[指定子串][文件]
功能描述:在文件中搜寻子串匹配的行并输出
-i 不区分大小写
-v 排除指定子串 ^#过滤注释
范例:$gerp mysql /root/intsll.log
4.4 帮助命令
命令名称:man
命令英文原意:manual
命令所在路径:/usr/bin/man
执行权限:所有用户
语法:man[命令或配置文件] ,同时有,优先命令文件,使用 5 可以更新
功能描述:获取帮助信息
范例:$man services
whatis[命令名称] 得到简短信息
apropos [配置文件信息] 相关信息
[命令]–help 简短选项
info 与 man相似
命令名称:help
命令所在路径:Shell内置命令
执行权限:所有用户
语法:help[命令]
功能描述:获得Shell内置命令的帮助信息
范例:$help umask
//查看umask命令的帮助信息
4.5用户管理命令
命令名称:useradd
命令所在路径:/usr/sbin/useradd
执行权限:root
语法:useradd用户名
功能描述:添加新用户
范例:$useradd yangming
命令名称:passwd
命令所在路径:/usr/bin/passwd
执行权限:所有用户
语法:passwd用户名
功能描述:设置用户密码
范例:$passwd yangmi
命令名称:who
命令所在路径:/usr/bin/who
执行权限:所有用户
语法:who
功能描述:查看登录用户信息
范例:$who
信息显示
#登录用户名 登录终端 tty本地终端 pts远程终端 登录时间 IP地址
命令名称:w
命令所在路径:/usr/bin/w
执行权限:所有用户
语法:w
功能描述:查看登录用户详细信息
范例:$w
4.6 压缩解压命令
命令名称:gzip
命令所在路径:GNU zip
执行权限:所有用户
语法:gzip[文件]
功能描述:压缩文件
压缩后文件格式:.gz
只能压缩文件,不能压缩目录
压缩后不保留原文件
命令名称:gunzip
命令所在路径:GNU unzip
执行权限:所有用户
语法:gunzip[文件] \\gizp -d
功能描述:解压缩.gz的压缩文件
范例:$gunzip boduo.gz
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项[-zcf][压缩后文件名][目录]
-c 打包
-v 显示详细信息
-f 指定文件名 \\ 只能放到最后
-z 打包同时压缩
功能描述:打包目录
压缩后文件格式:.tar.gz
tar命令解压语法:
-x 解包
-v显示详细信息
-f 指定解压文件
-z解压缩
范例:$tar -zxvf Japan.tar.gz
命令名称:zip
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:zip选项[-r][压缩后文件名][文件或目录]
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式:.zip
命令名称:unzip
命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip[压缩文件]
功能描述:解压.zip的压缩文件
范例:unzip test.zip
命令名称:bzip2
命令所在路径:/usr/bin/bzip2
执行权限:所有用户
语法:bzip2 选项[-k][文件]
-k 产生压缩文件后保留原文件
功能描述:压缩文件
压缩后文件格式:.bz2
范例:$bzip 2-k boduo
$tar -cjf Japan.tar.bz2 Jpan
压缩格式惊人
命令名称:bunzip2
命令所在路径:/usr/bin/bunzip2
执行权限:所有用户
语法:bunzip2 选项[-k][文件]
-k 解压缩后保留原文件
功能描述:解压缩
压缩后文件格式:.bz2
范例:$bunzip2 -k boduo.bz2
$tar -xjf Japan.tar.bz2
4.7 网络命令
命令名称:write
命令所在路径:/usr/bin/write
执行权限:所有用户
语法:write<用户名>
功能描述:给用户发消息,以Ctrl+D保存结束
范例:$write linzhiling
信息删除使用ctrl+退格键或者delete
命令名称:wall
命令英文原意:write all
命令所在路径:/usr/bin/wall
执行权限:所有用户
语法:wall[message]
功能描述:发广播信息
范例:$wall ShenChao is an honest man!
命令名称:ping
命令所在路径:/bin/ping
执行权限:所有用户
语法:ping 选项 IP地址
-c 指定发送次数
功能描述:测试网络连通性
范例:$ping 192.168.1.156
命令名称:ifconfig
命令英文原意:Interface configure
命令所在路径:/sbin/ifconfig
执行权限:root
语法:ifconfig 网卡名称 IP地址
功能描述:查看和设置网卡信息
范例:$ifconfig eth0 192.168.8.250
命令名称:mail
命令所在路径:/usr/bin/last
执行权限:所有用户
语法:mail[用户名]
功能描述:查看发送电子邮件
范例:$mail root
命令名称:last
命令所在路径:/usr/bin/last
执行权限:所有用户
语法:last
功能描述:列出目前与过去登入系统的用户信息
范例:$last
命令名称:lastlog
命令所在路径:/usr/bin/last
执行权限:所有用户
语法:lastlog
功能描述:检查某特定用户上次登录的时间
范例:$lastlog
$lastlog -u 502
命令名称:traceroute
命令所在路径:/bin/traceroute
执行权限:所有用户
语法:traceroute
功能描述:显示数据包到主机间的路径
范例:$traceroute www.lampborhter.net
命令名称:netstat
命令所在路径:/bin/netstat
执行权限:所有用户
语法:netstat[选项]
-t: TCP协议 (在线互动,实施更新)
-u: UDP协议 (更快)
-l: 监听
-r: 路由
-n: 显示IP地址和端口号
功能描述:显示网络相关信息
范例:$ netstat -tlun 查看本机监听的端口
$ netstat -an 查看本机所有的网络连接
$ netstat -rn 查看本机路由表
命令名称:setup
命令所在路径:/usr/bin/setup
执行权限:root
语法:setup
功能描述:配置网络
范例:$setup
命令名称:mount
命令所在路径:/bin/mount
执行权限:所有用户
语法:mount [-t 文件系统] 设备文件名 挂载点
范例:$mount -t iso9660 /dev/sr0/ mnt/cdrom/
$ mkdir /mnt/cdrom
$ mout /dev/sr0 /mnt/cdrom/
4.8 关机重启命令
1、shutdown命令
[root@localhost~]# shutdown[选项]时间
选项:
-c:取消前一个关机命令
-h: 关机
-r: 重启
shutdown -h now
shutdown -r now
shutdown -h 20:00
2、其他关机命令
[root@localhost~]#halt
[root@localhost~]# poweroff
[root@localhost~]# init0
3、其他重启命令
[root@localhost~]# reboot
[root@localhost~]#init 6
4、系统运行级别
0 关机
1 单用户
2 不完全多用户,不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
查询方法:init --help
X–>Linux图形界面
[root@localhost~]# cat /etc/inittab
#修改系统默认运行级别
id:3:initdefault:
[root@localhost~]#runlevel
#查询系统运行级别
5、退出
[root@localhost~]# logout
5 文本编辑器
5.1 Vim常用操作
Vim是一个功能强大的全屏幕文本编辑器,是Linux、UNIX上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。
Vim没有菜单,只有命令。
编辑模式:
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg G |
到第一行 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
删除:
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
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可使用) |
5.2 Vim使用技巧
- 导入命令执行结果:r[文件名] !命令(不退出使用) 可结合可分开使用
范例:
:r /etc/serverices
!which ls
:r /date
- 定义快捷键:map 快捷键 触发命令
范例: :map ^P I# //注释作用 ctrl+v+p
:map ^B 0x
连续行注释 :n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^g
替换::ab mymail samlee@lampbrother.net
6 软件包管理简介
6.1简介
软件包分类
- 源码包
- 脚本安装包
- 二进制包(RPM包、系统默认包)
源码包
源码包的优点:
- 开源,如果有足够的能力,可以修改源代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合适合的系统,更加稳定也效率更高
- 卸载方便
源码包的缺点:
- 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误
- 编译过程时间较长,安装比二进制安装时间长
- 因为是编译安装,安装过程中一旦报错新手很难解决
6.2 RPM包
二进制包的优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包安装快的多
二进制包缺点:
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活
- 依赖性
6.3 RPM包管理-rpm命令管理
RPM包命名原则
httpd-2.2.15-15.el6.centos.l.i686.rpm
httpd 软件报名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的Linux平台
i686 适合的硬件平台
rpm rpm包扩展名
RPM包依赖性
树形依赖:a->b->c
环形依赖:a->b->c->a
模板依赖:模板依赖查询网站:www.rpmfind.net
rpm -ivh
包全名与包名
- 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
- 包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库
6.4 RPM安装
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
–nodeps 不检测依赖性
rmp -Uvh 包全名
-U(upgrade) 升级
卸载
rpm -e 包名
选项:
-e(erase) 卸载
–nodeps 不检查依赖性
6.5 RPM包管理-yum在线管理
查询是否安装
[root@localhost~]#rpm -q 包名
#查询包是否安装
选项:
-q 查询包是否安装
-qa 查询所有包安装
-ql 包名 查询软件包详细信息
-p 查询未安装包信息
-f 查询系统文件名属于哪个包
-R 查询润简报的依赖性
6.6 RPM包管理-yum在线管理
6.7 RPM包管理-rpm命令管理
6.8 源码包管理
6.9 脚本安装包与软件包选择
7 用户和用户组管理
7.1 用户配置文件
7.1.1 用户信息文件/etc/passwd
用户管理简介:
- 所以越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范
- 在Linux中主要是通过用户配置文件来查看和修改用户信息
第1字段:用户名称
第2字段:密码标志
第3字段:UID(用户ID)
0:超级用户
1-499:超级用户
500-65535:普通用户
第4个字段:GID(用户初始组ID)
初始组和附加组
初始组:就是指用户已登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
第5字段:用户说明(相当于备注)
第6字段:家目录
普通用户:/home/用户名/
超级用户:/root/
第七字段:登录之后的Shell
Shell就是Linux的命令解释器。
在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin。
man 5 passwd查看passwd信息
7.1.2 影子文件/etc/shadow
第1字段:用户名
第2字段:加密密码
加密算法升级为SHA512散列加密算法
如果密码位是"!!" 或 “*” 代表没有密码,不能登录
第3字段:密码最后一次修改日期
使用1970年1月1日作为标准时间,每过一天时间戳加1
第4个字段:两次密码的修改间隔时间(和第3字段相比)
第5个字段:密码有效期(和第3字段相比)
第6个字段:密码修改到期前的警告天数(和第5字段相比)
第7个字段:密码过期后的宽限天数(和第5字段相比)
0:表示密码过期后立即失效
-1:则表示密码永远不会失效
第8字段:账号失效时间
用用时间戳表示
第9字段:保留
把时间戳换算为日期
date -d “1970-01-01 16066 days”
把日期换算为时间戳
echo (((((((date --date=“2014/01/06” +%s)/86400+1))
7.1.3 组信息文件/etc/group和组密码文件/etc/gshadow
组信息文件:
第一字段:组名
第二字段:组密码标志
第三字段:GID
第四字段:组中附加用户
组密码文件
第一字段:组名
第二字段:组密码标志
第三字段:组管理用户员
第四字段:组中附加用户
7.2 用户管理相关文件
用户的家目录
- 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
- 超级用户:/root/,所有者和所属组都是root用户,权限是550,
用户的邮箱
- /var/spool/mail/用户名/
用户模板目录
- /etc/skel/
7.3 用户管理命令
用户添加命令useradd
useradd命令格式
$ useradd[选项]用户名
-u UID: 手工指定用户的UID号
-d 家目录:手工指定用户的家目录
-g 组名: 手工指定用户的初始组
-G 组名: 指定用户的附加组
-s shell: 手工指定用户的登录shell。默认是/bin/bash
-c 备注说明
添加默认用户
$ useradd sc
$ grep sc /etc/passwd
$ grep sc/etc/shadow
$ grep sc /etc/group
$ grep sc/etc/gshadow
$ ll -d /home/lamp/
$ ll /var/spool/mail/lamp
指定选项添加用户
- useradd -u 550 -G root,bin -d /home/lamp1 -c “test user” -s /bin/bash sc
用户默认值文件
- /etc/default/useradd
- GROUP=100 #用户默认组
- HOME=/home #用户家目录
- INACTIVA=-1 #密码过期宽限天数(shadow文件7字段)
- EXPIRE= #密码失效时间(8)
- SHELL=/bin/bash #默认shell
- SKEL=/etc/skel #模板目录
- CREATE_MAIL_SPOOL=yes #是否建立邮箱
- /etc/login.defs
- PASS_MAX_DAYS 99999 #密码有效期(5)
- PASS_MIN_DAYS 0 #密码修改间隔(4)
- PASS_MIN_LEN #密码最小5位(PAM)
- PASS_WARN_AGE 7 #密码到期警告(6)
- UID_MIN 500 #最小和最大UID范围
- GID_MAX 6000
- ENCRYPT_METHOD SHA512 #加密模式
修改用户密码
$passwd[选项] 用户名
-S 查询用户密码的密码状态。仅root用户可以。
-l 暂时锁定用户。仅root用户可用
-u 解锁用户
–stdin 使用字符串作为用户的密码
7.4 用户组管理命令
修改用户信息
$usermod[选项]用户名选项:
-u UID: 修改用户的UID号
-c 用户说明:修改用户的说明信息
-G 组名: 修改用户的附加组
-L:临时锁定用户(Lock)
-U:解锁用户锁定(Unlock)
修改用户密码状态
$chage[选项]用户名
选项:
-l: 列出用户的详细密码状态
-d 日期:修改密码最后一次更改日期(shadow3字段)
-m 天数:两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W 天数: 密码过期前警告天数(6字段)
-I 天数:密码过后宽限天数(7字段)
-E 日期: 账号失效时间(8字段)
最重要的记:$chage -d 0 lamp
删除用户
$userdel[-r] 用户名
-r 删除用户的同时删除用户家目录
$vi /etc/passwd
$vi /etc/shadow
$vi /etc/group
$vi /etc/gshadow
$rm -rf /var/spool/mail/lamp
$rm -rf /home/lamp/
切换用户身份su
$su[选项]用户名
选项:
-:选项只是用“-”代表连带用户的环境变量一起切换
-c命令:仅执行一次命令,而不切换用户身份
添加组命令:
$groupadd [选项]组名
选项:
-g GID: 指定组ID
修改组
$groupmod[选项]组名
选项
-g GID: 修改组ID
-n 新组名: 修改组名
删除用户组
$groupdel 组名
把用户添加入组或从组中删除
$gpasswd[选项]组名
选项:
-a 用户名: 把用户加入组
-d 用户名: 把用户从组中删除
8 权限管理
8.1 ACL权限
8.1.1 ACL权限简介与开启
ACL权限简介:
权限正常分为root,group,其他人,在某些情况下,三种权限无法适应于多种情况,为避免问题的不便性,诞生了ACL权限
查看分区ACL权限是否开启
$Dumpe2fs -h /dev/sda3
临时开启分区ACL权限
$mount -o remount,acl/
#重新挂载根分区,并挂载加入acl权限
永久开始分区ACL权限
$vi /etc/fstab
#加入acl
$mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效
8.1.2 查看与设定ACL权限
查看ACL命令
$getfacle 文件
$查看acl权限
设定ACL权限的命令
$setfacl[选项]文件名
选项:
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
$setfacl -m u:st:rx /project/
#给用户st赋予r-x权限,使用"u:用户名:权限"格式
给用户组设定ACL权限
$groupadd tgroup2
$setfacl -m g:tgroup2:rwx project/
#为组tgroup2分配ACI权限。使用"g:组名:权限"格式
8.1.3 最大有效权限与删除ACL权限
最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限
A | B | AND |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
$setfacl -m m:rx 文件名
#设定mask权限为r-x。使用“m:权限”格式
删除ACL权限
setfacl -x u:用户名 文件
#删除指定用户的ACL权限
#setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
$setfacl -b 文件名
#会删除文件的所有的ACL权限
8.1.4 默认ACL权限和递归ACL权限(针对目录)
递归ACL权限(现有的)
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 文件名
默认ACL权限(新来的)
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会集成父目录的ACL权限。
setfacl -m d:u:用户名:权限 文件名
8.2 文件特殊权限
8.2.1 SetUID
功能:
- 只有可以执行的二进制程序才能设定SUID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
$ll /usr/bin/passwd
- cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
$ll /bin/cat
设定SetUID的方法
- 4代表SUID
- chmod 4755 文件名
- chmod u+s 文件名
取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
危险的SetUID
- 关键目录应严格控制写权限。比如“/”、“/usr”等
- 用户的密码设置要严格遵守密码三原则
- 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有者之外的文件被设置了SetUID权限
8.2.2 SetGID
SetGID针对文件的作用
- 只有可执行的二进制程序才能设置SGID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行在执行程序的适合,组身份升级为改程序文件的属主
- SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
SetGID针对目录的作用
- 普通用户必须对此目录拥有r和x权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
设定SetGID
- 2代表SGID
- chmod 2755文件名
- chmod g+s 文件名
取消SetGI
- chmod 755文件名
- chmod g-s 文件名
8.2.3 Sticky BIT*
SBIT粘着位功能:
- 粘着位目前只对目录有效
- 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
设置粘着位:
- chmod 1755目录名
- chmod o+t 目录名
取消粘着位:
- chmod 777 目录名
- chmod o-t 目录名
8.3 文件系统属性chattr权限
chartt命令格式
$charttr[±=][选项]文件或目录名
选项:
- i: 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,单不允许建立和删除文件
- a: 如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
8.4 系统命令sudo权限
sudo权限
- root把本来只能超级用户执行的命令赋予普通用户执行。
- sudo的操作对象是系统命令
sudo使用
$visudo
#实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
授权用户执行重启
sc ALL= /sbin/shutdown -r now
普通用户执行sudo赋予的命令
$sudo -l
#查看可用的sudo命令
$sudo /sbin/shutdown -r now
#普通用户执行sudo赋予的命令
9 文件系统管理
9.1 回顾分区和文件系统
分区类型:
- 主分区:总共最多只能分四个
- 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个、但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用
- 逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区
分区设备文件名 | |
---|---|
主分区1 | /dev/sda1 |
主分区2 | /dev/sda2 |
主分区3 | /dev/sda3 |
扩展分区 | /dev/sda4 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
分区设备文件名 | |
---|---|
主分区1 | /dev/sda1 |
扩展分区 | /dev/sda2 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
文件系统
- ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件(1TB=1024GB=1024*1024MB = 1024*1024*1024KB = 1024*1024*1024*1024B)
- ext3:ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件
- ext4:它是ext3文件系统的升级版。ext4在性能、伸缩性和可靠性方面进行了大量改进。EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统和16TB文件、无线数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久与分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。(1EB=1024PB=1024*1024TB)
9.2 文件系统常用命令
9.2.1 df命令、du命令、fsck命令和dump2f2命令
文件系统查看命令df
#df[选项][挂载点]
选项:
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc/sysfs
-h 使用习惯单元显示容量,如KB,MB或GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量。默认就是以KB为单位
统计目录或文件大小
#du[选项][目录或文件名]
选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
du命令和df命令的区别
- df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
- du命令是面向文件的,只会计算文件或目录占用的空间
文件系统修复命令fsck
#fsck[选项]分区设备文件名
选项:
-a: 不用显示用户提示,自动修复文件系统
-y: 自动修复。和-a作用一致,不过有些文件系统只支持-y
显示磁盘状态命令dumpe2fs
#dumpe2fs 分区设备文件名
9.2.2 挂载命令
查询与自动挂载
#mount [-l]
#查询系统中已经挂载的设备,-l会显示卷标名称
#mount -a
#依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式
#mount[-t 文件系统][-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项
9.2文件系统常用命令
9.2.3 挂载光盘与U盘
挂载光盘
#mkdir /mnt/cdrom/
#建立挂载点
#mount -t iso9660 /dev/cdrom/mnt/cdrom/
#挂载光盘
#mount /dev/sr0/mnt/cdrom/
#卸载命令
#umount 设备文件名或挂载点
#umount /mnt/cdrom
挂载U盘
#fdisk -l
#查看U盘设备文件名
#mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认是不支持NTFS文件系统
9.2.4 支持NTFS文件系统
内核方式和自动分配
9.3 fdisk分区
9.3.1 fdisk命令分区过程
1、添加新硬盘
2、查看新硬盘
#fdisk -l
3、使用fdisk命令分区
#fdisk /dev/sdb
4、重新读取分区表信息
#partprobe
5、格式化分区
#mkfs -t ext4 /dev/sdb1
#注意sdb1
6、建立挂载点并挂载
#mount /disk1
#mount /dev/sdb1 /disk1/
9.3.2 分区自动挂载与fstab文件修复
1、/etc/fstab文件
第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高
2、分区自动挂载
#vi /etc/fstab
#mount -a
#依据配置文件/etc/fstab的内容,自动挂载
3、/etc/fstab文件修复
#mount -o remount,rw /
9.3 fdisk分区
9.4 /etc/fstab文件修复
9.4 分配swap分区
1、free命令
#free
- cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程
- buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程
2、新建swap分区
#fdisk /dev/sdb
把分区ID改为82
3、格式化
#mkswap /dev/sdb6
4、加入swap分区
#swapon /dev/sdb6
#加入swap分区
#swapoff /dev/sdb6
#取消swap分区
5、swap开机自动挂载
#vi /etc/fstab
/dev/sdb6 swap swap default 0 0
10 Shell基础
10.1 Shell概述
Shell是什么
- Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
- Shell还是一个功能相当强大的变成语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
Shell的分类
- Bourne Shell:1979年起
- Bourne Shell
- C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
- Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家住主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh\tcsh
- Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell
Linux支持的Shell
- /etc/shells
10.2 Shell脚本的执行方式
echo输出命令
#echo[选项]输出内容
选项:
-e 支持反斜线控制的字符转换
#echo -e “\e[1;31m abcd \e[0m”
#输出颜色
#30m=黑色,31m=红色,32m=绿色,33m=黄色
#34m=蓝色,35m=洋红,36m=青色,37m=白色
第一个脚本
#vi hello.sh
脚本执行
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
- 通过bash调用执行脚本
- bash hello.sh
windows脚本转linux脚本
dos2unix 文件名
unix2dos 文件名
10.3 Bash的基本功能
10.3.1 历史命令与命令补全
历史命令
#history[选项][历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令保存文件 ~/.bash_history
- 历史命令默认会保存1000条,可以在环境变量配置文件(ubuntu查找命令/.bashrc)进行修改
历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条该字符串开头的命令
命令与文件补全
- 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
10.3.2 命令别名与常用快捷键
命令别名alias
#alias 别名=‘原命令’
#设定命令别名
#alias
#查询命令别名
命令执行时顺序
- 第一顺位执行用绝对路径或相对路径执行
- 第二顺位执行别名
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
让别名永久生效
#vi /root/.bashrc
删除别名
#unalias 别名
Bash常用快捷键
10.3.3 输入输出重定向
标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
输出重定向
类型 | 符号 | 作用 |
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
命令>>文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 | |
标准错误输出重定向 | 错误命令2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
错误命令2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 | |
正确输出和错误输出同时保存 | 命令>文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 |
命令>>文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 &>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 &>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 >>文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
输入重定向
#wc [选项][文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
- 命令 < 文件 把文件作为命令的输入
- 命令 << 停止标识符
10.3.4 多命令顺序执行与管道符
多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1;命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1&&命令2 | 逻辑与;当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行 |
|| | 命令1||命令2 | 逻辑或;当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行 |
A && B || C
通过C判断B
磁盘复制
#dd if=输入文件 of=输出文件 bs=字节数 count=个数
选项:
if=输入文件 指定源文件或源设备
of=输出文件 指定目标文件或目标设备
bs=字节数 指定一次输入/输出多少字节,即把这些字节看做一个数据块
count=个数 指定输入/输出多个数据块
例子:
#date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000;
管道符
命令格式:
#命令1|命令2
#命令1的正确输出作为命令2的操作对象,颜色显示
例子:
#ll -a /etc/ | more
#grep[选项]“搜索内容”文件名
选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto 搜索出的关键字用颜色显示
举例:
#netstat -an | grep ESTABLISHED
10.3.5 通配符与其他特殊符号
通配符(用来匹配文件名)
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符 |
Bash中其他特殊符号
符号 | 作用 |
---|---|
‘’ | 单引号。在单引号中所有的特殊符号,如"$“和”`"(反引号)都没有特殊含义。 |
“” | 双引号。在双引号中所有的特殊符号都没有特殊含义,但是"$“、”`“和”\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 |
`` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和()作用一样,不过推荐使用()作用一样,不过推荐使用()作用一样,不过推荐使用(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令 |
# | 在Shell脚本中,#开头的行代表注释 |
$ | 用于调用变量的值,如需要调用变量name的值时, |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出"$"符号,而不当做是变量引用 |
10.4 Bash的变量
10.4.1 用户自定义变量
什么是变量
- 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或者一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。
变量设置规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
- 在Bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或者双引号包括。
- 在变量的值中,可以使用“\”转义符。
- 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“变量名”或用变量名”或用变量名”或用{变量名}包含。
- 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
- 环境变量名建议大写,便于区分
变量的分类
- 用户自定义变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
- 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
本地变量
#name=“shen chao”
变量叠加
- #aa=123
- #bb="$aa"456
- #cc=${aa}789
变量调用
- #echo $name
变量查看
- #set
变量删除
- #unset name
10.4.2 环境变量
环境变量是什么
- 用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效
设置环境变量
export 变量名=变量值
#申明变量
env
#查询变量
unset变量
#删除变量
系统常见环境变量
PATH:系统查找命令的路径
- #echo $PATH
PATH=“$PATH”:/root/sh
#PATH变量叠加(临时改变)
PS1:定义系统提示符的变量
\d: 显示日期,格式为“星期 月 日”
\h: 显示简写主机名。如默认主机名“localhost”
\t: 显示24小时制时间,格式为“HH:MM:SS”
\T: 显示12小时制时间,格式为"HH:MM:SS"
\A: 显示24小时制时间,格式为“HH:MM”
\u: 显示当前用户名
\w: 显示当前所在目录的完整名称
\W: 显示当前所在目录的最后一个目录
\#: 执行的第几个命令
/KaTeX parse error: Expected 'EOF', got '#' at position 24: …是root用户会显示提示符为“#̲”,如果是普通用户会显示提示符…”
可以修改,但是没必要
10.4.3 位置参数变量
位置参数变量
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1-9代表第一到第九个参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10}.$0 获取当前执行的shell脚本的文件名,包括路径 |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
10.4.4 预定义变量
预定义变量
预定义变量 | 作用 |
---|---|
$? | 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
接受键盘输入
#read[选项][变量名]
选项:
-p “提示信息”:在等待read输入时,输出提示信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数: read命令只接受指定的字符数,就会执行
-s: 隐藏输入的数据,适用于机密信息的输入
10.5 Bash的运算符
10.5.1 数值运算与运算符
declare声明变量类型
#declare[+/-][选项] 变量名
选项:
-: 给变量设定类型属性
+: 取消变量的类型属性
-i: 将变量声明为整数型(integer)
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
数值运算-方法1
#aa=11
#bb=22
#declare cc=aa+aa+aa+bb
方法2:expr或let数值运算工具
#aa=11
#bb=22
#dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意+两边的空格
方法3: "((运算式))"或“((运算式))" 或“((运算式))"或“[运算式]”
运算符
10.5.2 变量测试与内容替换
10.6 环境变量配置文件
10.6.1 环境变量配置文件简介
source命令(配置文件直接生效,不用注销或者重新登录)
#source 配置文件
或
#.配置文件
环境变量配置文件简介
- 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
- 注:etc下对所有用户剩下,~家目录下只对当前目录生效
10.6.2 环境变量配置文件作用
/etc/profile的作用:
- USER变量:
- LOGNAME变量:
- MALL变量:
- PATH变量:
- HOSTNAME变量:
- HISTSIZE变量
- umask:
- 调用/etc/profile.d/*.sh文件
~/.bash_profile的作用
- 调用了~/.bashrc文件
- 在PATH变量后面加入了“:$HOME/bin”这个目录
~/.bashrc的作用
- 定义默认别名
- 调用etc/bashrc
/etc/bashrc的作用
/etc/bashrc的作用
- PS!变量
- umask
- PATH变量
- 调用/etc/profile.d/*.sh文件
10.6.3 其他配置文件和登录信息
注销时环境变量的配置
- ~/.bash_logout
其他配置文件
- ~/.bash_history
Shell登录信息
本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
- 转义符在/etc/issue.net文件中不能使用
- 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
登录后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
11 正则表达式
11.1 基础正则表达式
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
- 通配符用来匹配符合条件的文件名,通配符是完全匹配,ls、find、cp这些命令不支持正则表达式。ls、find、cp这些命令不支持正则表达式,所以只能使用shell字节的通配符来进行匹配了
基础正则表达式
"*"前一个字符匹配0次,或任意多次
- grep “a*” test_rule.txt
- #匹配所有内容,包括空白行
- grep “aa*” test_rule.txt
- #匹配至少包含有一个a的行
- grep “aaa*” test_rule.txt
- #匹配至少包含有两个连续a的字符串
- grep “aaaaa*” test_rule.txt
- #匹配至少包含四个连续a的字符串
“.”匹配除了换行符外任意一个字符
grep “s…d” test_rule.txt
#“s…d”会匹配在s和d这两个字母之间一定有两个字符的单词
grep “s.*d” test_rule.txt
#匹配在s和d字母之间有任意字符
grep “.*” test_rule.txt
#匹配所有内容
“^" 匹配行首,"$"匹配行尾
- grep “^M” test_rule.txt
- #匹配以大写"M"开头的行
- grep “n$” test_rule.txt
- #匹配以小写“n”结尾的行
- grep -n “^$” test_rule.txt
- #会匹配空白行
“[]”匹配中括号中指定的任意一个字符,只匹配一个字符
- grep “s[ao]id” test_rule.txt
- #匹配s和i字母中,要不是a,要不是o
- grep “[0-9]” test_rule.txt
- #匹配任意一个数字
- grep “1” test_rule.txt
- #匹配用小写字母开头的行
“[^]” 匹配除中括号的字符以外的任意一个字符
- grep “[a-z]” test_rule.txt
- #匹配不用小写字母开头的行
- grep “[a-zA-Z]” test_rule.txt
- #匹配不用字母开头的行
“\” 转义符
- grep “\.$” test_rule.txt
- #匹配使用“.”结尾的行
“\{n}” 表示其前面的字符恰好出现n次
- grep “a\{3\}” test_rule.txt
- #匹配a字母连续出现三次的字符串
- grep “[0-9]\{3\}” test_rule.txt
- #匹配包含连续的三个数字的字符串
“\{n,\}” 表示其前面的字符出现不小于n次
- grep “2\{3,\}[a-z]” test_rule.txt
- #匹配最少用连续三个数字开头的行
“\{n,m\}” 匹配其前面的字符至少出现n次,最多出现m次
- grep “sa\{1,3\}i” test_rule.txt
- #匹配a至少一次,最多3个a
11.2 字符截取命令
11.2.1 cut字段提取命令
#cut [选项]文件名
选项:
-f列号: 提取第几列
-d 分隔符: 按照指定分隔符分割列
11.2.2 printf命令
#printf ‘输出类型输出格式’ 输出内容
输出类型:
%ns: 输出字符串,n是数字指代输出几个字符
%ni: 输出整数。n是数字指代输出几个数字
%m.nf: 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2位是小数,6位是整数。
输出格式:
\a: 输出警告声音
\b: 输出退格键,就是Backspace键
\f: 清楚屏幕
\n: 换行
\r: 回车,Enter键
\t: 水平输出退格键,Tab键
\v: 垂直输出退格键,Tab键
在awk命令的输出中致辞print和printf命令
- print: print会在每个输出之后自动加入一个换行符(Linux默认没有print命令)、
- printf: printf是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手工加入换行符
11.2.3 awk命令
#awk ‘条件1{动作1} 条件2{动作2}…’ 文件名
条件(Pattern):
一般使用关系表达式作为条件
x>10 判断变量x是否大于10
x>=10 大于等于
x<=10 小于等于
动作(action):
格式化输出
流程控制语句
#awk ‘{printf $2 “\t” $6 “\n”}’ student.txt
#df -h | awk ‘{print $1 “\t” $3}’
BEGIN(先执行一个动作,所有数据之前)
#awk ‘BEGIN{printf “This is a transcript\n”} {printf $2 “\t” $6 “\n”}’ student.txt
FS内置变量(先读入第一行,再指定分割符)
#cat /etc/passwd | grep “/bin/bash” | \
#awk ‘BEGIN’ {FS=“:”} {printf $1 “\t” $3 “\n”}‘
END (在命令最后执行)
#awk ‘END{printf “The End \n”} {print $2 “\t” $6 “\n”}’ student.txt
关系运算符
#cat student.txt | grep -v Name | awk ‘$6 >= 87 {print $2}’
11.2.4 sed命令
- sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据选取、替换、删除、新增的命令。
#sed [选项]‘[动作]’ 文件名
选项:
-n: 一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕
-e 允许对输入数据应用多条sed命令编辑
-i: 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a: 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行某位需要用“\”代表数据未完结。
c: 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。
i: 插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
d: 删除,删除指定的行
p: 打印,输出指定的行
s: 字串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新子串/g”(和vim中的替换格式类似)
11.3 字符处理命令
排序命令sort
#sort[选项]文件名
选项:
-f: 忽略大小写
-n: 以数值型进行排序,默认使用字符串型排序
-r: 反向排序
-t: 指定分隔符,默认分隔符是制表符
-k n[, m]: 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
统计命令wc
#wc[选项]文件名
选项:
-l: 只统计行数
-w: 只统计单词数
-m: 只统计字符数
11.3 字符处理命令
11.4 条件判断
按照文件类型进行判断
#test -e /root/install.log
#[-e /root/install.log]
按照文件权限进行判断
两个文件之间进行比较
两个数值之间比较
字符串的判断
多重条件判断
11.5 流程判断
11.5.1 if语句
单分支if条件语句
if [ 条件判断式 ]; then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
单分支条件语句需要注意几个点
- if语句使用fi结尾,和一般语句使用大括号结尾不同
- [ 条件表达式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
- then后面跟符合条件之后执行的程序,可以放在[]之后,用";“分割。也可以换行写入,就不需要”;"了。
多分支if条件语句
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立,执行的另一个程序
fi
多分支if条件语句
if [ 条件判断式1 ]
then
执行1
elif [ 条件判断式2 ]
then
执行2
…
else
当所有条件都不成立时,最后执行此程序
fi
11.5.2 case语句
多分支case条件语句
- case语句和if…elif…else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
…
*)
如果变量的值都不是以上的值,则执行程序
;;
esac
11.5.3 for循环
语法一:
for 变量 in 值1 值2 值3
do
程序
done
语法二:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
11.5.4 while循环
- while循环是不定循环,也称作条件循环。只要条件判断是成立,循环就会一直继续,直到条件判断式成立,循环就会一直继续,直到条件判断是不成立,循环才会停止。这就和for的固定循环不太一样了。
while [ 条件判断式 ]
do
程序
done
until循环
- until循环和while循环相反,until循环时只要条件判断式不成立则进行循环,并执行循环程序,一旦循环条件成立,则终止循环。
12 Linux服务管理
12.1 服务简介与分类
启动与自启动
查询已安装的服务
- RPM包安装的服务
- chkconfig --list
- #查看服务自启动状态,可以看到所有RPM包安装的服务
- 源码包安装的服务
- 查看服务安装位置,一般是/usr/local/下
RPM安装服务和源码包安装服务的区别
- RPM安装服务和源码包安装服务的区别就是安装位置不同
- 源码包安装在指定位置,一般是/usr/local/
- RPM包安装在默认位置中
12.2 RPM包安装服务的管理
12.2.1 独立服务的管理
1、RPM包安装服务的位置
- RPM安装服务和源码包安装服务的区别就是安装位置的不同
- 源码包安装在指定位置,一般是/usr/local/
- 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|
独立服务的自启动
- chkconfig [–level 运行级别][独立服务名][on|off]
- 修改/etc/rc.d/rc.local文件
- 使用ntsysv命令管理自启动
2、独立服务的启动
- /etc/init.d/独立服务名 start|stop|status|restart|
- service 独立服务名 start|stop|restart||status
3、独立服务的自启动
- chkconfig [–level 运行级别] [独立服务名] [on|off]
- 修改/etc/rc.d/rc.local文件
- 使用ntsysv命令管理自启动
12.2.2 基于xinetd服务的管理
12.3 源码包安装服务的管理
12.4 服务管理总结
13 Linux系统管理
13.1 进程管理
13.1.1 进程查看
1、进程的简介
- 进程是正在执行的一个程序或命令,每个进程都有一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
2、进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
3、查看系统所有的进程
#ps aux
#查看系统中所有进程,使用BSD操作系统格式
#ps -le
#查看系统中所有进程,使用Linux标准命令格式
- USER:该进程是由哪个用户产生的:
- PID:进程的ID号;
- %CPU资源的百分比,占用越高,进程越消耗资源;
- %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
- VSZ: 该进程占用虚拟内存的大小,单位KB;
- RSS: 该进程占用实际物理内存的大小,单位KB;
- TTY: 该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-256代表虚拟终端。
- STAT: 进程状态。常见的状态有:R:运行、S:睡眠:、T: 停止状态、s:包含子进程、+:位于后台
- START: 该进程的启动时间
- TIME: 该进程张勇CPU的运算时间,注意不是系统时间
- COMMAND:产生此进程的命令名
4、查看系统健康状态
#top[选项]
选项
- -d 秒数: 指定top命令每隔几秒更新。默认是3秒
- 在top命令的交互模式当中可以执行的命令:
- ?或h: 显示交互模式的帮助
- P: 以CPU使用率排序,默认就是此项
- M: 以内存的使用率排序
- N: 以PID排序
- q: 退出top
5、查看进程树
- #pstree [选项]
选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
13.1.2 终止进程
1、kill命令
#kill -l
#查看可用的进程信号
2、killall命令
#killall [选项][信号] 进程名
#按照进程名杀死进程
选项:
-i: 交互式,询问是否要杀死某个进程
-l: 忽略进程名的大小写
3、pkill命令
#pkill [选项] [信号] 进程名
#按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户
#w
#使用w命令查询本机已经登录的用户
13.2 工作管理
1、把进程放入后台
- tar -zcf etc.tar.gz /etc &
- #top
- #在top命令执行的过程中,按下ctrl+z快捷键
2、查看后台的工作
#jobs [-l]
选项:
-l: 显示工作的PID
注:"+"号代表最近一个放入后台的工作,也是工作恢复时,默认回复的工作。“-”号代表倒数第二个放入后台的工作
3、将后台暂停的工作恢复到前台执行
#fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别
4、把后台暂停的工作恢复到后台执行
#bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
13.3 系统资源查看
1、vmstat命令监控系统资源
#vmstat[刷新延时 刷新次数]
2、dmesg开机时内核检测信息
#dmesg
#dmesg | grep CPU
3、free命令查看内存使用状态
#free [-b|-k|-m|-g]
选项:
-b: 以字节为单位
缓存和缓冲的区别
- 简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的
4、查看CPU信息
#cat/proc/cpuinfo
5、uptime命令
#uptime
#显示系统的启动时间和平均负载,top命令的第一行相同。w命令也可以看到这个数据
6、查看系统与内核相关信息
#uname[选项]
选项:
-a: 查看系统所有相关信息
-r: 查看内核版本
-s: 查看内核名称
判断当前系统的位数
#file /bin/ls
查询当前linux系统的发行版本
#lsb_release -a
7、列出进程打开或使用的文件信息
#lsof [选项]
选项:
-c 字符串: 只列出以字符串开头的进程打开的文件
-u 用户名: 只列出某个用户的进程打开的文件
-p pid: 列出某个PID进程打开的文件
13.4 系统定时任务
1、crond服务管理与访问控制
#service crond restrat
#chkconfig crond on
2、用户的crontab设置
#crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务
#crontab -e
#进入crontab编辑界面。会打开vim编辑你的工作
*****执行的任务
14 日志管理
14.1 日志管理简介
14.2 rsyslogd日志服务
14.3 日志轮替
15 启动管理
16 备份与恢复
16.1 备份概述
1、Linux系统需要备份的数据
- /root/目录:
- /home/目录:
- /var/spool/mail/目录:
- /etc/目录:
- 其他目录:
2、备份策略
- 完全备份:完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块硬盘,整个分区或某个具体的目录
完全备份
增量备份
差异备份
16.2 dump和restore命令
dump命令
#dump [选项] 备份之后的文件名 原文件或目录
选项:
-level: 就是我们说的0-9十个备份级别
-f 文件名: 指定备份之后的文件名
-u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
-v: 显示备份过程中更多的输出信息
-j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式
-w: 显示允许被dump的分区的备份等级及备份时间
2、restore命令
#restore命令
#restore [模式选项][选项]
模式选项:restore命令常用的模式有以下四种,者四个模式不能混用。
-c: 比较备份数据和实际数据的变化
-i: 进入交互模式,手工选择需要恢复的文件
-t: 查看模式,用于查看备份文件中拥有哪些数据
-r: 还原模式,用于数据还原
选项:
-f: 指定备份文件的文件名
的一个程序或命令,每个进程都有一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
2、进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
3、查看系统所有的进程
#ps aux
#查看系统中所有进程,使用BSD操作系统格式
#ps -le
#查看系统中所有进程,使用Linux标准命令格式
- USER:该进程是由哪个用户产生的:
- PID:进程的ID号;
- %CPU资源的百分比,占用越高,进程越消耗资源;
- %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
- VSZ: 该进程占用虚拟内存的大小,单位KB;
- RSS: 该进程占用实际物理内存的大小,单位KB;
- TTY: 该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-256代表虚拟终端。
- STAT: 进程状态。常见的状态有:R:运行、S:睡眠:、T: 停止状态、s:包含子进程、+:位于后台
- START: 该进程的启动时间
- TIME: 该进程张勇CPU的运算时间,注意不是系统时间
- COMMAND:产生此进程的命令名
4、查看系统健康状态
#top[选项]
选项
- -d 秒数: 指定top命令每隔几秒更新。默认是3秒
- 在top命令的交互模式当中可以执行的命令:
- ?或h: 显示交互模式的帮助
- P: 以CPU使用率排序,默认就是此项
- M: 以内存的使用率排序
- N: 以PID排序
- q: 退出top
[外链图片转存中…(img-mt43avQb-1629211100254)]
[外链图片转存中…(img-w8098Jf7-1629211100255)]
[外链图片转存中…(img-e1tLkltn-1629211100255)]
[外链图片转存中…(img-A8bd0KZT-1629211100256)]
[外链图片转存中…(img-plngXb8I-1629211100257)]
5、查看进程树
- #pstree [选项]
选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
13.1.2 终止进程
1、kill命令
#kill -l
#查看可用的进程信号
[外链图片转存中…(img-EVD6fBeJ-1629211100257)]
2、killall命令
#killall [选项][信号] 进程名
#按照进程名杀死进程
选项:
-i: 交互式,询问是否要杀死某个进程
-l: 忽略进程名的大小写
3、pkill命令
#pkill [选项] [信号] 进程名
#按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户
#w
#使用w命令查询本机已经登录的用户
13.2 工作管理
1、把进程放入后台
- tar -zcf etc.tar.gz /etc &
- #top
- #在top命令执行的过程中,按下ctrl+z快捷键
2、查看后台的工作
#jobs [-l]
选项:
-l: 显示工作的PID
注:"+"号代表最近一个放入后台的工作,也是工作恢复时,默认回复的工作。“-”号代表倒数第二个放入后台的工作
3、将后台暂停的工作恢复到前台执行
#fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别
4、把后台暂停的工作恢复到后台执行
#bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
13.3 系统资源查看
1、vmstat命令监控系统资源
#vmstat[刷新延时 刷新次数]
2、dmesg开机时内核检测信息
#dmesg
#dmesg | grep CPU
3、free命令查看内存使用状态
#free [-b|-k|-m|-g]
选项:
-b: 以字节为单位
缓存和缓冲的区别
- 简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的
4、查看CPU信息
#cat/proc/cpuinfo
5、uptime命令
#uptime
#显示系统的启动时间和平均负载,top命令的第一行相同。w命令也可以看到这个数据
6、查看系统与内核相关信息
#uname[选项]
选项:
-a: 查看系统所有相关信息
-r: 查看内核版本
-s: 查看内核名称
判断当前系统的位数
#file /bin/ls
查询当前linux系统的发行版本
#lsb_release -a
7、列出进程打开或使用的文件信息
#lsof [选项]
选项:
-c 字符串: 只列出以字符串开头的进程打开的文件
-u 用户名: 只列出某个用户的进程打开的文件
-p pid: 列出某个PID进程打开的文件
13.4 系统定时任务
1、crond服务管理与访问控制
#service crond restrat
#chkconfig crond on
2、用户的crontab设置
#crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务
#crontab -e
#进入crontab编辑界面。会打开vim编辑你的工作
*****执行的任务
[外链图片转存中…(img-15oaoEH5-1629211100258)]
14 日志管理
14.1 日志管理简介
14.2 rsyslogd日志服务
14.3 日志轮替
15 启动管理
16 备份与恢复
16.1 备份概述
1、Linux系统需要备份的数据
- /root/目录:
- /home/目录:
- /var/spool/mail/目录:
- /etc/目录:
- 其他目录:
2、备份策略
- 完全备份:完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备份整块硬盘,整个分区或某个具体的目录
完全备份
增量备份
差异备份
16.2 dump和restore命令
dump命令
#dump [选项] 备份之后的文件名 原文件或目录
选项:
-level: 就是我们说的0-9十个备份级别
-f 文件名: 指定备份之后的文件名
-u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
-v: 显示备份过程中更多的输出信息
-j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式
-w: 显示允许被dump的分区的备份等级及备份时间
2、restore命令
#restore命令
#restore [模式选项][选项]
模式选项:restore命令常用的模式有以下四种,者四个模式不能混用。
-c: 比较备份数据和实际数据的变化
-i: 进入交互模式,手工选择需要恢复的文件
-t: 查看模式,用于查看备份文件中拥有哪些数据
-r: 还原模式,用于数据还原
选项:
-f: 指定备份文件的文件名
a-z ↩︎
0-9 ↩︎
Linux(ubuntu)内容整理(常用命令)相关推荐
- Linux/Ubuntu操作系统及常用命令
一.概述 操作系统:是直接运行在计算机上的系统软件,是控制硬件和支持软件运行的计算机程序 常见操作系统:Windows.Linux.macOS.iOS.Android 虚拟机软件:是能够虚拟出计算机的 ...
- linux 查看服务器性能常用命令
2019独角兽企业重金招聘Python工程师标准>>> linux 查看服务器性能常用命令 一.top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况, ...
- 【Java从0到架构师】Linux 基础知识、常用命令
Linux 基础知识.常用命令 Linux 基础知识 内核和发行版 常见的 Linux 发行版 Linux 的应用领域 Linux 与 Windows 的区别 Linux 常用命令 *系统目录结构 s ...
- Linux基础系统优化及常用命令
# Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
- 安卓机顶盒也能玩树莓派linux,附fastboot常用命令
安卓机顶盒也能玩树莓派linux,附fastboot常用命令 网上看到的安卓手机(通常为ARM硬件)安装Linux,实际上这个linux只相当于安卓系统下的一个app应用而已. 这篇文章安装的是完全独 ...
- 【Linux】Linux入门学习之常用命令二
介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...
- 【Linux】Linux入门学习之常用命令一
介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...
- Linux 文件打包压缩常用命令(笔记,搜录自网络和文档)
Linux 文件打包压缩常用命令 zip 老了一些,但是所有系统都支持(.zip). 格式 zip 压缩后的文件名 要被压缩的文件 参数 参数 -1 压缩 ...
- linux命令的使用实验报告,Linux实验报告一-常用命令使用.doc
Linux实验报告一-常用命令使用.doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 常用命令使用 专业名称 计算机科学与技术班 级 计科1405 学生姓名 高宏伟学号(8位) 04 ...
- Linux目录结构和常用命令
Linux目录结构和常用命令 一.Linux目录结构 Linux文件夹很多都是固定的,分门别类,要想快速弄清楚系统的架构,那么哪些目录里面装着哪些文件是干什么用的. 首先,回顾一下Linux系统下文件 ...
最新文章
- These dependencies were not found: *!!vue-style-loader!css-loader?
- JavaScript学习随记——常见全局对象属性及方法
- [转]kafka介绍
- Perform 浮动工具栏 无标题窗口的移动
- Entity Framework 6 Code First的简单使用和更新数据库结构
- 恒大集团:网传《关于召开全国恒大财富投资人大会通知》系伪造
- 自动化设计-框架介绍 TestSnap
- Linux系统时间和java的时间不一致
- excel设置单元格整数后还是有小数点_一招教你统一解决excel单元格的单位问题!...
- pytorch总结(一)torch.nn模块使用详解
- 嵌入式 tomcat的使用
- 电机扭矩计算公式T=9550*P/n
- Bug 引发的 18 次重大事故
- 让HTML img垂直居中的三种办法:
- Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配...
- 基于西门子S7-1200PLC的步进电机控制
- Linux: fPIC与 pie 区别
- 多进程中的进程锁(互斥锁)
- 32位/64位操作系统的最大支持内存的空间
- SSRF漏洞之常见Bypass篇