命令 | 含义 |
---|---|
ctrl+c | 强制停止 |
ctrl+d | 退出登出 |
histroy | 查看历史命令 |
!命令前缀 | 自动匹配上一个命令 |
ctrl+r | 搜索历史命令 |
ctrl+a|e | 光标移动到命令开始或结束 |
ctrl+箭头 | 左右跳单词 |
ctrl+l 或 clear | 清屏 |
磁盘分区是使用分区编辑器,在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。
分区类型:
格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16,FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
设备文件名
必须分区:
推荐分区:
Linux严格区分大小写
Linux中所有内容以文件形式保存,包括硬件
硬盘文件是/dev/sd[a-p]
光盘文件时/dev/sr0等
Linux不靠扩展名区分文件类型
Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘
Windows下的程序不能直接在Linux中安装和运行
Linux各目录的作用
命令[-选项][参数]
例: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执行
命令名称: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
命令名称: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
命令名称:ln
命令英文原意:link
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件][目标文件]
-s 创建软链接
功能描述:生成链接文件
范例:$ln -s /etc/issue /tmp/issue.soft //软链接
$ln /etc/issue /tmp/issue.hard //硬链接
软链接:类似Windows快捷方式
特点:
硬链接:类似深拷贝复制(地址复制)
特点:
同步更新(i节点相同,另一个文件删除,不会删除本文件)
通过i节点识别
与软链接区别:
不能跨分区(C盘和D盘的区别)
不能针对目录使用
命令名称: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
命令名称: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-- 文件
命令名称: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节点查找
类似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
命令名称:man
命令英文原意:manual
命令所在路径:/usr/bin/man
执行权限:所有用户
语法:man[命令或配置文件] ,同时有,优先命令文件,使用 5 可以更新
功能描述:获取帮助信息
范例:$man services
whatis[命令名称] 得到简短信息
apropos [配置文件信息] 相关信息
[命令]–help 简短选项
info 与 man相似
命令名称:help
命令所在路径:Shell内置命令
执行权限:所有用户
语法:help[命令]
功能描述:获得Shell内置命令的帮助信息
范例:$help umask
//查看umask命令的帮助信息
命令名称: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
命令名称: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
命令名称: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/
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
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可使用) |
范例:
:r /etc/serverices
!which ls
:r /date
范例: :map ^P I# //注释作用 ctrl+v+p
:map ^B 0x
连续行注释 :n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^g
替换::ab mymail [email protected]
软件包分类
源码包
源码包的优点:
源码包的缺点:
二进制包的优点:
二进制包缺点:
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
包全名与包名
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
–nodeps 不检测依赖性
rmp -Uvh 包全名
-U(upgrade) 升级
卸载
rpm -e 包名
选项:
-e(erase) 卸载
–nodeps 不检查依赖性
查询是否安装
[root@localhost~]#rpm -q 包名
#查询包是否安装
选项:
-q 查询包是否安装
-qa 查询所有包安装
-ql 包名 查询软件包详细信息
-p 查询未安装包信息
-f 查询系统文件名属于哪个包
-R 查询润简报的依赖性
用户管理简介:
第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信息
第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))
组信息文件:
第一字段:组名
第二字段:组密码标志
第三字段:GID
第四字段:组中附加用户
组密码文件
第一字段:组名
第二字段:组密码标志
第三字段:组管理用户员
第四字段:组中附加用户
用户的家目录
- 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
- 超级用户:/root/,所有者和所属组都是root用户,权限是550,
用户的邮箱
- /var/spool/mail/用户名/
用户模板目录
- /etc/skel/
用户添加命令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 使用字符串作为用户的密码
修改用户信息
$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 用户名: 把用户从组中删除
ACL权限简介:
权限正常分为root,group,其他人,在某些情况下,三种权限无法适应于多种情况,为避免问题的不便性,诞生了ACL权限
查看分区ACL权限是否开启
$Dumpe2fs -h /dev/sda3
临时开启分区ACL权限
$mount -o remount,acl/
#重新挂载根分区,并挂载加入acl权限
永久开始分区ACL权限
$vi /etc/fstab
#加入acl
$mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效
查看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:组名:权限"格式
最大有效权限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权限
递归ACL权限(现有的)
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 文件名
默认ACL权限(新来的)
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会集成父目录的ACL权限。
setfacl -m d:u:用户名:权限 文件名
功能:
$ll /usr/bin/passwd
$ll /bin/cat
设定SetUID的方法
取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
危险的SetUID
SetGID针对文件的作用
SetGID针对目录的作用
设定SetGID
取消SetGI
SBIT粘着位功能:
设置粘着位:
取消粘着位:
chartt命令格式
$charttr[±=][选项]文件或目录名
选项:
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赋予的命令
分区类型:
分区设备文件名 | |
---|---|
主分区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 |
文件系统
文件系统查看命令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 分区设备文件名
查询与自动挂载
#mount [-l]
#查询系统中已经挂载的设备,-l会显示卷标名称
#mount -a
#依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式
#mount[-t 文件系统][-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项
挂载光盘
#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文件系统
内核方式和自动分配
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/
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 /
1、free命令
#free
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
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
echo输出命令
#echo[选项]输出内容
选项:
#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 文件名
历史命令
#history[选项][历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令保存文件 ~/.bash_history
- 历史命令默认会保存1000条,可以在环境变量配置文件(ubuntu查找命令/.bashrc)进行修改
历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条该字符串开头的命令
命令与文件补全
- 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
命令别名alias
#alias 别名=‘原命令’
#设定命令别名
#alias
#查询命令别名
命令执行时顺序
- 第一顺位执行用绝对路径或相对路径执行
- 第二顺位执行别名
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
让别名永久生效
#vi /root/.bashrc
删除别名
#unalias 别名
Bash常用快捷键
标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
输出重定向
类型 | 符号 | 作用 |
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
命令>>文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 | |
标准错误输出重定向 | 错误命令2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
错误命令2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 | |
正确输出和错误输出同时保存 | 命令>文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 |
命令>>文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 &>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 &>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令 >>文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
输入重定向
#wc [选项][文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令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
通配符(用来匹配文件名)
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符 |
Bash中其他特殊符号
符号 | 作用 |
---|---|
‘’ | 单引号。在单引号中所有的特殊符号,如"$“和”`"(反引号)都没有特殊含义。 |
“” | 双引号。在双引号中所有的特殊符号都没有特殊含义,但是"$“、”`“和”\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 |
`` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 推 荐 使 用 ()作用一样,不过推荐使用 ()作用一样,不过推荐使用(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令 |
# | 在Shell脚本中,#开头的行代表注释 |
$ | 用于调用变量的值,如需要调用变量name的值时, |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出"$"符号,而不当做是变量引用 |
什么是变量
- 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或者一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。
变量设置规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
- 在Bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或者双引号包括。
- 在变量的值中,可以使用“\”转义符。
- 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变 量 名 ” 或 用 变量名”或用 变量名”或用{变量名}包含。
- 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
- 环境变量名建议大写,便于区分
变量的分类
- 用户自定义变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
- 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
本地变量
#name=“shen chao”
变量叠加
- #aa=123
- #bb="$aa"456
- #cc=${aa}789
变量调用
- #echo $name
变量查看
- #set
变量删除
- #unset name
环境变量是什么
- 用户自定义变量只在当前的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用户会显示提示符为“#̲”,如果是普通用户会显示提示符…”
可以修改,但是没必要
位置参数变量
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10}.$0 获取当前执行的shell脚本的文件名,包括路径 |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量
预定义变量 | 作用 |
---|---|
$? | 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
接受键盘输入
#read[选项][变量名]
选项:
-p “提示信息”:在等待read输入时,输出提示信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数: read命令只接受指定的字符数,就会执行
-s: 隐藏输入的数据,适用于机密信息的输入
declare声明变量类型
#declare[+/-][选项] 变量名
选项:
-: 给变量设定类型属性
+: 取消变量的类型属性
-i: 将变量声明为整数型(integer)
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
数值运算-方法1
#aa=11
#bb=22
#declare cc= a a + aa+ aa+bb
方法2:expr或let数值运算工具
#aa=11
#bb=22
#dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意+两边的空格
方法3: " ( ( 运 算 式 ) ) " 或 “ ((运算式))" 或“ ((运算式))"或“[运算式]”
运算符
source命令(配置文件直接生效,不用注销或者重新登录)
#source 配置文件
或
#.配置文件
环境变量配置文件简介
- 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
- 注:etc下对所有用户剩下,~家目录下只对当前目录生效
/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文件
注销时环境变量的配置
- ~/.bash_logout
其他配置文件
- ~/.bash_history
Shell登录信息
本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
登录后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
正则表达式与通配符
基础正则表达式
"*"前一个字符匹配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
#cut [选项]文件名
选项:
-f列号: 提取第几列
-d 分隔符: 按照指定分隔符分割列
#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命令
#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}’
#sed [选项]‘[动作]’ 文件名
选项:
-n: 一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕
-e 允许对输入数据应用多条sed命令编辑
-i: 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a: 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行某位需要用“\”代表数据未完结。
c: 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。
i: 插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
d: 删除,删除指定的行
p: 打印,输出指定的行
s: 字串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新子串/g”(和vim中的替换格式类似)
排序命令sort
#sort[选项]文件名
选项:
-f: 忽略大小写
-n: 以数值型进行排序,默认使用字符串型排序
-r: 反向排序
-t: 指定分隔符,默认分隔符是制表符
-k n[, m]: 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
统计命令wc
#wc[选项]文件名
选项:
-l: 只统计行数
-w: 只统计单词数
-m: 只统计字符数
按照文件类型进行判断
#test -e /root/install.log
#[-e /root/install.log]
按照文件权限进行判断
两个文件之间进行比较
两个数值之间比较
字符串的判断
多重条件判断
单分支if条件语句
if [ 条件判断式 ]; then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
单分支条件语句需要注意几个点
多分支if条件语句
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立,执行的另一个程序
fi
多分支if条件语句
if [ 条件判断式1 ]
then
执行1
elif [ 条件判断式2 ]
then
执行2
…
else
当所有条件都不成立时,最后执行此程序
fi
多分支case条件语句
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
…
*)
如果变量的值都不是以上的值,则执行程序
;;
esac
语法一:
for 变量 in 值1 值2 值3
do
程序
done
语法二:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
while [ 条件判断式 ]
do
程序
done
until循环
启动与自启动
查询已安装的服务
RPM安装服务和源码包安装服务的区别
1、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、独立服务的启动
3、独立服务的自启动
1、进程的简介
2、进程管理的作用
3、查看系统所有的进程
#ps aux
#查看系统中所有进程,使用BSD操作系统格式
#ps -le
#查看系统中所有进程,使用Linux标准命令格式
4、查看系统健康状态
#top[选项]
选项
5、查看进程树
选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
1、kill命令
#kill -l
#查看可用的进程信号
2、killall命令
#killall [选项][信号] 进程名
#按照进程名杀死进程
选项:
-i: 交互式,询问是否要杀死某个进程
-l: 忽略进程名的大小写
3、pkill命令
#pkill [选项] [信号] 进程名
#按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户
#w
#使用w命令查询本机已经登录的用户
1、把进程放入后台
2、查看后台的工作
#jobs [-l]
选项:
-l: 显示工作的PID
注:"+"号代表最近一个放入后台的工作,也是工作恢复时,默认回复的工作。“-”号代表倒数第二个放入后台的工作
3、将后台暂停的工作恢复到前台执行
#fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别
4、把后台暂停的工作恢复到后台执行
#bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
1、vmstat命令监控系统资源
#vmstat[刷新延时 刷新次数]
2、dmesg开机时内核检测信息
#dmesg
#dmesg | grep CPU
3、free命令查看内存使用状态
#free [-b|-k|-m|-g]
选项:
-b: 以字节为单位
缓存和缓冲的区别
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进程打开的文件
1、crond服务管理与访问控制
#service crond restrat
#chkconfig crond on
2、用户的crontab设置
#crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务
#crontab -e
#进入crontab编辑界面。会打开vim编辑你的工作
*****执行的任务
1、Linux系统需要备份的数据
2、备份策略
完全备份
增量备份
差异备份
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标准命令格式
4、查看系统健康状态
#top[选项]
选项
[外链图片转存中…(img-mt43avQb-1629211100254)]
[外链图片转存中…(img-w8098Jf7-1629211100255)]
[外链图片转存中…(img-e1tLkltn-1629211100255)]
[外链图片转存中…(img-A8bd0KZT-1629211100256)]
[外链图片转存中…(img-plngXb8I-1629211100257)]
5、查看进程树
选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
1、kill命令
#kill -l
#查看可用的进程信号
[外链图片转存中…(img-EVD6fBeJ-1629211100257)]
2、killall命令
#killall [选项][信号] 进程名
#按照进程名杀死进程
选项:
-i: 交互式,询问是否要杀死某个进程
-l: 忽略进程名的大小写
3、pkill命令
#pkill [选项] [信号] 进程名
#按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户
#w
#使用w命令查询本机已经登录的用户
1、把进程放入后台
2、查看后台的工作
#jobs [-l]
选项:
-l: 显示工作的PID
注:"+"号代表最近一个放入后台的工作,也是工作恢复时,默认回复的工作。“-”号代表倒数第二个放入后台的工作
3、将后台暂停的工作恢复到前台执行
#fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别
4、把后台暂停的工作恢复到后台执行
#bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
1、vmstat命令监控系统资源
#vmstat[刷新延时 刷新次数]
2、dmesg开机时内核检测信息
#dmesg
#dmesg | grep CPU
3、free命令查看内存使用状态
#free [-b|-k|-m|-g]
选项:
-b: 以字节为单位
缓存和缓冲的区别
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进程打开的文件
1、crond服务管理与访问控制
#service crond restrat
#chkconfig crond on
2、用户的crontab设置
#crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务
#crontab -e
#进入crontab编辑界面。会打开vim编辑你的工作
*****执行的任务
[外链图片转存中…(img-15oaoEH5-1629211100258)]
1、Linux系统需要备份的数据
2、备份策略
完全备份
增量备份
差异备份
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 ↩︎