文章目录
一、systemd 初始化进程
初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化进程,为用户提供合适的工作环境。在RHEL 7 系统中已经将System V init 初始化进程服务替换成systemd。 systemd使用并发启动机制,性能有了不少的提升。
表 1 systemctl 管理服务的启动、重启、停止、重载、查看状态等
System V init 命令 | systemd 命令 | 作用 |
---|---|---|
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
表 2 systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等
System V init 命令 | systemd 命令 | 作用 |
---|---|---|
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自启 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为开机自启动 |
chkconfig --list | systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用情况 |
二、必须掌握的Linux 命令
常见执行Linux 命令的格式:
命令名称 [命令参数] [命令对象]
1.查看帮助及clear命令
① man
作用:man 命令是用来查看帮助信息的
用法:man 命令名称
举例:man ls
表 3 man命令帮助信息的结构及意义
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示 |
OVERVIEW | 概述 |
DEFAULTS | 默认功能 |
OPTIONS | 具体的可用选项 |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关资料 |
HISTORY | 维护历史与联系方式 |
② 命令 [–help/-h/–h]
例如:查看man命令的帮助信息
man --help
man -h
③ clear 命令
作用:用于清空屏幕缓冲区内容
格式:clear
2.常用系统工作命令
① echo 命令
作用:echo命令用于在终端输出字符串或变量值
格式:echo [字符串|$变量]
例如:打印SHELL变量的值
echo $SHELL
#输出结果:/bin/bash
② date 命令
作用:显示及更改系统的时间或日期
格式:date [选项] [+指定的格式]
表 4 date 命令的参数和作用
参数 | 作用 |
---|---|
%t | 跳格【tab键】 |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒 (00~59) |
%j | 一年中的第几天 |
例如:按照 “年-月-日 小时:分钟:秒” 的格式查看系统时间
date "+%Y-%m-%d %H:%M:%S"
#输出结果:2019-07-12 16:29:12
将系统时间设置为2019年7月1日8点30分的命令
date -s "20190701 8:30:00"
③ reboot 命令
作用:用于重启系统
格式:reboot
reboot
④ poweroff / shutdown 命令
作用:用于关闭系统
格式:poweroff / shutdown [-t secs] time [告警信息]
-t secs 送出警告信息和关机信号之间要延迟多少秒
time 设置多久时间后执行shutdown命令,立即关机用now
例如:设置5分钟后关机
shutdown -t 10 -h +5 'System will shutdown after 5 minutes'
⑤ wget 命令
作用:下载网络文件
格式:wget 【参数】下载地址
表 5 wget命令的参数及作用
参数 | 作用 |
---|---|
-b | 后台下载 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源 |
-r | 递归下载 |
wget https://blog.csdn.net/laochi5
⑥ ps 命令
作用:用于查看系统进程
格式:ps [参数]
表 6 ps命令的参数及作用
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户及其他详细信息 |
-x | 显示没有控制终端的进程 |
例如:
ps -aux #using BSD syntax
ps -ef #using standard syntax
⑦ top 命令
作用:用于动态监听进程活动与系统负载等信息
格式:top
⑧ pidof 命令
作用:用于查询某个指定服务进程的PID
格式:pidof [参数]
例如:查询sshd服务的pid
pidof sshd
⑨ kill 命令
作用:用于终止某个指定PID的服务进程
格式:kill [参数] [进程PID]
例如:
kill -l # 查看系统信号
kill 2156 # 终止 PID为2156的进程
⑩ killall 命令
作用:用来终止某个指定名称的服务所对应的全部进程
格式:killall [参数] [进程名称]
例如:终止 httpd 服务程序
killall httpd
⑪ source 命令
作用:让修改后的配置文件立即生效
格式:source 配置文件路径
例如:让/etc/profile文件的修改生效
source /etc/profile
3.系统状态监测命令
① ifconfig / ip addr 命令
作用:用于获取网卡配置与网络状态等信息类似于Windows上的ipconfig
格式:ifconfig [网络设备] [参数] / ip addr
ifconfig
② uname 命令
作用:用于查看系统内核和系统版本等信息
格式:uname [参数] 一般用-a
uname -a
③ uptime 命令
作用:用于查看系统的负载信息
格式:uptime
uptime
④ free 命令
作用:用于显示当前系统内存使用情况
格式:free [参数] 一般用-h
free -h
⑤ who 命令
作用:用于查看当前登录主机的用户终端信息
格式:who [参数]
who
⑥ last 命令
作用:用于查看系统的登录记录
格式:last [参数]
last
该命令是从日志文件中读取登录记录
⑦ history 命令
作用: 用于显示历史执行过的命令
格式:history [参数] 一般使用-c清空历史记录
history
⑧ sosreport 命令
作用:用于收集系统配置和架构信息并输出诊断文档
格式:sosreport
sosreport
⑨ netstat 命令
作用:查看网络(端口)使用状态
格式:netstat 【选项】
例如:查看3690端口是否有程序在使用
netstat -anp | grep 3690
⑩ hostname 命令
作用:用于查看或临时修改主机名称
格式:hostname [选项]
例如:
hostname # 查看当前主机名
hostname newname #将主机名更改为newname,重启失效
hostname -i #查看主机ip地址(读取/etc/hosts文件)
4.工作目录切换命令
① pwd 命令
作用:用于显示用户当前所处的工作目录
格式:pwd [选项]
② cd 命令
作用: 用于切换工作路径
格式: cd [目录名称]
例如:切换到用户家目录
cd ~
③ ls 命令
作用:用于显示目录下文件信息
格式: ls [选项] [文件]
例如:显示当前路径下所有文件及其详细信息
ls -al
5. 文本文件编辑命令
① cat / tac命令
作用:用于查看纯文本文件(内容较少)
格式:cat /tac [选项] 文件
其中cat为正向顺序打印文件内容,而tac为逆向打印。
② more / less 命令
作用:用于查看纯文本文件(内容较多)
格式:more / less [选项] 文件
③ head 命令
作用:用于查看纯文件文件前N行
格式:head [选项] 文本
例如:查看文件前20行内容
head -n 20 纯文本文件
④ tail 命令
作用:用于查看纯文本文件后N行或持续刷新内容(多为日志文件)
格式:tail [选项] 文件
例如:查看文件后20行
tail -n 20 纯文本文件
查看最新文件内容
tail -f 文件名(多为日志文件)
⑤ tr 命令
作用:用于替换文本文件中的字符
格式:tr [原始字符] [目标字符]
例如:将文件中所有小写字符串替换为大写
cat 文件名 | tr [a-z] [A-Z]
#替换原文件内容太危险所以一般配合cat(more)等命令使用
⑥ wc 命令
作用:用于统计指定文本的字数、行数或字节数
格式:wc [参数] 文本
表 7 wc 命令的参数及作用
参数 | 作用 |
---|---|
-l | 显示行数 |
-w | 显示单词数 |
-c | 显示字节数 |
⑦ cut 命令
作用:用于按“列”提取文本字符
格式:cut [参数] 文本
例如:读取passwd文件中的用户名信息,提取以冒号为间隔符的第一列内容
cut -d: -f1 /etc/passwd
#-d用于指定间隔符
#-f用于指定查看列数
⑧ diff 命令
作用:用于比较多个文本文件的差异
格式:diff [参数] 文件 一般用-c查看文件内容具体的不同
例如:判断两个文件是否相同
diff --brief a.txt b.txt
⑨ paste 命令
作用:用于合并多个文件
格式:paste [选项] 文件1 文件2 … 文件n
表 7-2 paste 命令的参数及作用
参数 | 作用 |
---|---|
-d | 指定分隔符 |
-s | 将每个文件合并成行 |
- | 使用标准输入 |
例如:
文件1内容:
A
B
C
文件2内容:
1
2
3
paste 1 2
结果如下:
A 1
B 2
C 3
paste -d: 1 2
结果如下:
A:1
B:2
C:3
paste -s 1 2
结果如下:
A B C
1 2 3
以每行3列格式显示/etc目录列表
ls /etc | paste - - -
⑩ nl 命令
作用:用于为输出的每行添加行号
格式:nl 文件
nl /root/1.sh
6.文件目录管理命令
① touch 命令
作用:用于创建空白文件或设置文件的时间
格式:touch [选项] 文件
表 8 touch 命令的参数及作用
参数 | 作用 |
---|---|
-a | 仅修改“读取时间(atime)” |
-m | 仅修改“修改时间(mtime)” |
-d | 同时修改atime和mtime |
② mkdir 命令
作用:用于创建空白的目录
格式:mkdir [选项] 目录 一般使用-p递归创建
③ cp / scp命令
cp命令:
作用:用于复制文件或目录
格式:cp [选项] 源文件 目标文件
scp命令:
作用:用于远程拷贝
格式:scp 源文件 目标文件
远程文件目录写法:
用户名@ip地址或者域名或者主机名:服务器上的文件路径
表 9 cp 命令的参数及作用
参数 | 作用 |
---|---|
-p | 保留原文件的属性 |
-d | 保留原链接文件的属性 |
-r | 递归复制 |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr |
④ mv 命令
作用:用于剪切文件或重命名文件
格式:mv [选项] 源文件 [目标文件名|目标路径]
⑤ rm 命令
作用:用于删除文件或目录
格式:rm [选项] 文件
例如:强制删除文件a.txt
rm -rf a.txt
⑥ dd 命令
作用:用于按照指定大小和数据块来复制文件或转换文件
格式:dd 【参数】
表 10 dd 命令的参数及作用
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置“块”大小 |
count | 设置“块”的个数 |
例如:从/dev/zero设备取大小为500MB的数据块保存名为file_500的文件
dd if=/dev/zero of=file_500 count=1 bs=500M
利用dd命令压制光盘镜像文件
dd if=/dev/cdrom of=1.iso
#将文件目录/dev/cdrom下的所有文件压制成1.iso镜像文件
⑦ file 命令
作用:用于查看文件的类型
格式:file 文件名
7.搜索与压缩命令
① grep 命令
作用:用于在文本中执行关键词搜索
格式:grep [选项] [查找内容] [查找范围]
表 11 grep 命令的参数及作用
参数 | 作用 |
---|---|
-b | 用来显示匹配位置 |
-c | 显示匹配行数量 |
-i | 不区分大小写 |
-l | 显示首次匹配的行(文件) |
-n | 显示行号 |
-v | 只显示不包含关键词的行 |
-x | 显示严格匹配的行 |
例如:查看文本中非注释行
cat 文件名 |grep -v "^#"
② find 命令
作用:用于按照指定条件来查找文件
格式:find [查找路径] 寻找条件 操作
表 12 find 命令的参数及作用
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限 |
-user/nouser | 匹配所有者/无所有者的文件 |
-group/nogroup | 匹配匹配所有组/无所有组的文件 |
-a/m/ctime -n +n | 匹配访问文件/修改文件内容/修改文件权限的时间(-n指n天内,+n指n天前) |
-newer f1 !f2 | 匹配比文件f1新比文件f2旧的文件 |
- -type b/d/c/p/l/f | 匹配文件类型(块设备/目录/字符设备/管道/链接文件/文本文件) |
-size | 匹配文件的大小(小/大于100KB用:-/+100k表示) |
-prune | 匹配时忽略某个目录 |
-empty | 匹配大小为0的目录或文件 |
-path | 匹配路径 |
-exec 命令 {} \; | 对查找后的文件执行操作(-ok会询问用户是否需要执行该命令) |
例如:
#利用find查看文件数
find . -type f -print | wc -l
#查找只读文件
find / -perm /u=r
#查找可执行文件
find / -perm /a=x
#查找权限为777的文件并将权限改为775
find / -type d -perm 777 -print -exec chmod 775 {} \;
#查找并删除文件(单个或多个)
find / -type f -name "test.c" -exec rm -f {} \;
find / -type f -name "*.c" -exec rm -f {} \;
③ whereis 命令
作用:用于查看文件的位置。一般用于搜索软件安装目录
格式:whereis 文件名/软件名称
例如:查看python的相关文件路径
whereis python
#执行结果:
python: /usr/bin/python2.6 /usr/bin/python /usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6 /usr/share/man/man1/python.1.gz
④(解)压缩命令
tar 命令:
作用:用于对文件进行打包压缩或解压
格式:tar [选项] 文件
表 13 tar 命令的参数及作用
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解压缩文件 |
-t | 查看压缩文件内容 |
-z | 用gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压过程 |
-f | 目标文件名(该参数必须放在最后面) |
-p | 保留原文件的权限于属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压目录 |
例如:将/etc目录压缩成gzip格式
tar -zvcf etc.tar.gz /etc
其实在shell命令行下可以使用的文件(解)压缩工具有gzip、bzip2和zip等
表 14 其他常用解压缩工具
文件类型 | 压缩工具 / 解压工具 |
---|---|
.gz | gzip / gunzip |
.bz2 | bzip2 / bunzip2 |
.zip | zip / unzip |
8.用户与文件权限命令
① useradd 命令
作用:用于创建新的用户
格式:useradd [选项] 用户名
表 15 useradd 命令的参数及作用
参数 | 作用 |
---|---|
-d | 指定用户的家目录 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-u | 指定用户的默认UID |
-g | 指定用户组 |
-G | 指定一个或多个扩展用户组 |
-N | 不创建于用户同名的基本用户组 |
-s | 指定用户默认的shell解释器 |
② groupadd 命令
作用:用于创建新的用户组
格式:groupadd [选项] 群组名
③ usermod 命令
作用:修改用户的属性
格式:usermod [选项] 用户名
表 16 usermod 命令的参数及作用
参数 | 作用 |
---|---|
-c | 填写用户的备注信息 |
-d -m | 可重新指定用户家目录并把数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户 |
-U | 解锁用户 |
-s | 变更默认终端 |
-u | 修改用户UID |
④ passwd 命令
作用:用于修改用户密码、过期时间、认证信息等
格式:passwd 【选项】[用户名]
表 17 passwd 命令的参数及作用
参数 | 作用 |
---|---|
-l | 锁定用户,禁止登陆 |
-u | 解锁用户,允许登陆 |
- -stdin | 允许通过标准输入修改用户密码 |
-d | 使该用户可用空密码登陆 |
-e | 强制用户在下次登陆时修改密码 |
-S | 显示用户的密码是否被锁定以及显示加密算法 |
⑤ userdel 命令
作用:用于删除用户
格式:userdel 【选项】用户名
表 18 userdel 命令的参数及作用
参数 | 作用 |
---|---|
-f | 强制删除用户 |
-r | 同时删除用户及用户家目录 |
⑥ groupdel 命令
作用:用于删除用户组
格式:groupdel 【选项】用户名
注意事项:
- 不能移除现有用户的主组。在移除此组之前,必须先移除此用户。
- 需要手动检查所有文件系统,以确保没有遗留的属于此组的文件。
⑦ chmod 命令
作用:给用户赋权限
格式:chmod 权限 文件
⑧ chown 命令
作用:将某个目录的所有权改为某个用户
格式:chown 用户 目录
例如:将/data目录的所有权交给bow用户
chown bow /data
⑨ su 命令
作用:切换用户
格式:su 用户名 (su - 用户名:完全切换即变更环境变量)
⑩ sudo 命令
作用:用于给普通用户提供额外的权限完成原本管理员才能完成的任务
格式:sudo 【参数】命令名称
表 19 sudo 命令的参数及作用
参数 | 作用 |
---|---|
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名 / UID值 | 以指定用户身份执行命令 |
-k | 清空密码的有效时间,下次执行sudo时需要验证 |
-b | 后台执行指定命令 |
-p | 更改询问密码的提示语 |
9. 字符串处理命令
常用字符串截取和处理命令有: cut、printf、awk、sed、sort、wc
cut 和 wc 在上面已经介绍了就不重复说明了 。
① printf 命令
格式:printf ‘输出类型 输出格式’ 输出内容
表 20 printf 命令的输出参数及作用
参数 | 作用 |
---|---|
%ns | 输出字符串。n是数字,指代输出几个字符 |
%ni | 输出整数。n是数字,指代输出几个数字 |
%m.nf | 输出m位数,n位小数 |
\a | 输出警告声音 |
\b | 输出退格键,也就是BackSpace键 |
\f | 消除屏幕 |
\n | 换行 |
\r | 回撤 |
\t | 水平制表符 |
\v | 垂直制表符 |
例如:
printf '%s %s %s\n' 1 2 3 4 5 6 #表示每三个位一组输出,并加换行符
printf '%s\t%s\t%s\t' $(cat a.txt) #表示以4列的形式输出
② awk 命令
格式: awk ‘条件1{动作1}条件2{动作2}…’ 文件名
例如:
awk '{printf $2 "\t" $6 "\n"}' a.txt #输出文件a.txt的第2列和第6列
awk '{print $1}' hello.c #打印hello.c文件所有行的第一个字段,默认字段的分隔符为空格或制表符
③ sort 命令
格式:sort【选项】文件 说明:动作必须用引号引起来
表 21 sort 命令的输出参数及作用
参数 | 作用 |
---|---|
-m | 若指定文件已排序则合并文件 |
-c | 检查文件是否已排序 |
-u | 去除重复数据 |
-o | 将排序输出写入文件 |
-d | 按字典顺序排序 |
-f | 大小写字母同等对待 |
-M | 作为月份比较 |
-r | 逆序输出 |
-b | 忽略空白 |
-t | 指定字符作为分隔符 |
-n | 按数值大小排序 |
-k n,m | 按照指定的字段范围排序。从第n字段开始,m字段结束(没有m表示到文尾) |
例如:将排序结果输出到原文件中
sort -nr number -o number # number为文件名
按月份排序
sort -n -k 2 -t '-' date
# -t<分隔符> 指定分隔字符 -k选择哪个区间进行排序 date为文件名
④ sed 命令
格式:sed [选项] ‘[动作]’ 文件名 说明:动作必须用引号引起来
表 22 sed 命令的输出参数及作用
参数 | 作用 |
---|---|
-n | 把处理结果输出到屏幕(不修改原文件) |
-e | 允许多条sed命令,每条以分号隔开 |
-i | 修改原文件内容 |
表 23 sed 命令的动作及说明
动作 | 作用 |
---|---|
a\ | 在当前行后添加一行或多行内容。多行行末尾需要加"\" |
c\ | 用c后面的字符替换原数据 |
i\ | 在当前位置插入一行或多行 |
d | 删除指定的行 |
p | 输出指定的行 |
s | 字符串替换,格式为"行范围 s/旧字符串/新字符串/g" |
例如:
sed '2p' a.txt #输出第2行后,又把所有内容输出一遍
sed -n '2p' a.txt #只输出第二行
sed '2,4d' a.txt #删除第2到4行,只删除屏幕输出,不会更改文件本身的内容
sed '2a hello' a.txt #在第二行插入一行 hello
sed '2i hello' a.txt #在第二行前插入多行 hello 一行
sed '2c no person' a.txt #用no person 替换第二行
sed '4s/99/55/g' a.txt #把第4行的99替换为55
sed -i '4s/99/55/g' a.txt #把第4行的99替换为55,修改的是原文件而不是屏幕输出
sed -i 's/99/55/g' a.txt #s前不加行号时表示替换整个文件中匹配的字符串
sed -e 's/Liming//g;s/Gao//g' a.txt #-e表示允许多个条件执行,把Liming替换为空,把Gao替换为空
⑤ echo 中字符截取
假设有变量 var=http://www.google.com/test.htm
1、 # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.google.com/test.htm
2、 ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.google.com/
结果是 test.htm
3、 %号截取,删除右边字符,保留左边字符
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.google.com
4、 %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
5、 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
6、 从左边第几个字符开始,一直到结束。
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.google.com/test.htm
7、 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:test
8、 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:test.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
三、存储与磁盘命令
① mount 命令
作用:用于挂载文件系统
格式: mount 文件系统 挂载目录
表 24 mount 命令的参数及作用
参数 | 作用 |
---|---|
-a | 挂载所有在/etc/fstab中定义的文件系统 |
-t | 指定文件系统的类型 |
例如:把设备/dev/sdb2挂载到/backup 目录
mount /dev/sdb2 /backup
② umount 命令
作用:用于卸载已挂载的设备文件
格式:umount 【挂载点/设备文件】
例如:卸载 /dev/sdb2
umount /dev/sdb2
③ fdisk 命令
该命令为交互式命令,可用动态调整
作用:用于管理磁盘分区
格式:fdisk [磁盘名称]
表 24 fdisk 命令的参数及作用
参数 | 作用 |
---|---|
m | 查看全部可用参数 |
n | 添加新的分区 |
d | 删除某个分区的信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区信息 |
w | 保存退出 |
q | 不保存退出 |
④ du 命令
作用:用于查看文件数据占用量
格式:du [选项] 【文件】
例如:查看/etc 目录占用空间大小
du -sh /etc
⑤ df 命令
作用:用来检查文件系统的磁盘空间占用情况
格式:df [选项] [文件]
表 25 df 命令的参数及作用
参数 | 作用 |
---|---|
-a | 显示所有的文件系统,包括虚拟文件系统 |
-h | 以人们易读的GB、MB、KB等格式显示 |
-H | 和-h参数一样,但是1k=1000 |
-i | 不用硬盘容量,而是以inode的数量来显示 |
-k | 以KB的容量显示 |
-m | 以MB的容量显示 |
-l | 只显示本地文件系统 |
-t | 只显示指定类型的文件系统 |
-T | 显示文件系统类型 |
-x | 不显示指定类型的文件系统。 |
例如:
df /bin/ls /home /usr/ #指定多个文件或文件夹
df -a #包括虚拟文件系统
df -B 1k #1k为单位
df -h #以人们易读的方式显示
df -t ext3 #只显示类型为ext3的文件系统
⑥ ln 命令
作用:用于创建链接文件
格式:ln [选项] 目标
表 26 ln 命令的参数及作用
参数 | 作用 |
---|---|
-s | 创建符号链接,没有该参数默认创建硬链接 |
-f | 强制创建文件或目录的链接 |
-i | 覆盖前询问 |
-v | 显示创建过程 |
四、 其他命令
① curl 命令
作用:打开一个网址
格式:curl 网址
curl www.baidu.com
② ping 命令
作用: 用于测试与对方主机的网络连通性
格式:ping [选项] [ip地址/网址]
ping -c 3 -i 0.2 -W 3 www.baidu.com
#-c表示尝试次数 -i表示每个数据包的发送间隔 -W表示等待超时时间
③ gzexe 命令
作用:用于加密原shell脚本文件
格式:gzexe shell脚本文件
gzexe 1.sh #1.sh为shell脚本文件
④ read 命令
作用:用于读取用户输入
格式:read [选项] 变量名(默认变量名为REPLY)
例如:读取用户输入,并将内容保存到变量PASSWD中
read -p "请输入密码:" PASSWD #-p 表示输出提示信息
read -p "请输入密码:" -s PASSWD #-s 表示隐藏用户输入内容
read -r line # 允许输入包含反斜杠
read -t 3 # 指定读取等待时间为3秒
⑤ echo 命令的补充
表 27 echo 命令常用的转义字符
转义字符 | 作用 |
---|---|
反斜杠 | 使其后面的一个变量变成单纯字符 |
单引号 | 转义其中所有变量为单纯字符串 |
双引号 | 保留其中的变量属性,不做转义处理 |
反引号 | 将内容作为命令执行并返回结果 |
例如:
PRICE=5 #声明一个变量PRICE
echo "Price is \$$PRICE" # 将第一$符号以字符串的形式输出
echo `uname -a`
表 28 echo 命令的参数及作用
参数 | 作用 |
---|---|
-n | 不换行输出 |
-e | 开启反斜杠转义 |
-E | 禁用反斜杠转义(默认) |
例如:打印有色字体
echo -e "\033[1;30m I love you!\033[0m"
# 1的位置代表背景色, 30的位置是代表字体颜色,其中/033也可以用/e代替
表 29 echo 中转义字符及作用
转义字符 | 作用 |
---|---|
\033[0m | 关闭所有属性 |
\033[1m | 设置高亮度 |
\033[4m | 下划线 |
\033[5m | 闪烁 |
\033[7m | 反显 |
\033[8m | 消隐 |
\033[30m ~ \33[37m | 设置前景色 |
\033[40m ~ \33[47m | 设置背景色 |
\033[nA | 光标上移n行 |
\033[nB | 光标下移n行 |
\033[nC | 光标右移n行 |
\033[nD | 光标左移n行 |
\033[y;xH | 设置光标位置 |
\033[2J | 清屏 |
\033[K | 清除从光标到行尾的内容 |
\033[s | 保存光标位置 |
\033[u | 恢复光标位置 |
\033[?25l | 隐藏光标 |
\033[?25h | 显示光标 |
⑥ trap 命令
作用:用于指定在接收到信号后将要采取的动作
格式: trap [-pl] ‘接受信号后执行的命令’ 信号名称(或值)
例如:
trap 'echo -e "\n\033[37;31;5m安装已被中断\033[39;49;0m";read -p "输入任意键继续:"' 2
# 当接受到“2”信号时执行echo以及read命令,一般用于保证程序正常运行
# 单(双)引号里面可以为多个命令,但必须以分号隔开,另外2为SIGINT(程序终止信号)一般由Ctrl+C键触发,trap捕捉到该信号会执行trap中的命令并不会终止程序
trap "exit 1" HUP INT PIPE QUIT TERM
# 表示当shell收到HUP INT PIPE QUIT TERM这几个命令时,当前执行的程序会读取参数“exit 1”,并将它作为命令执行。
参数说明:
- 如果命令项是空字符串则指定的信号都会被shell和它所调用的命令忽略;
- 如果有-p选项而没有提供命令项则会打印所有与指定信号相关联的trap命令;
- 如果没有提供任何参数或者仅有-p选项,trap命令将会打印与每一个信号有关联的命令的列表;
- 另外 -l 的作用是让shell打印一个命令名称和其相对应的编号的列表。
五、信号及快捷键
1. 信号
信号的分类:
- 不可靠信号:(1 - 31) 会出现信号丢失,非实时信号
- 可靠信号:(34 - 64) 不会出现信号丢失 ,实时信号
表 30 系统信号及说明
系统信号 | 说明 |
---|---|
1) SIGHUP | 终端的控制进程结束,通知session内的各个作业,脱离关系 |
2) SIGINT | 程序终止信号(Ctrl+c) |
3) SIGQUIT | 和2号信号类似(Ctrl+\),但产生core文件 |
4) SIGILL | 执行了非法指令,可执行文件本身出现错误 |
5) SIGTRAP | 有断点指令或其他trap指令产生,有debugger使用 |
6) SIGABRT | 调用abort函数生成的信号 |
7) SIGBUS | 非法地址(内存地址对齐出错) |
8) SIGFPE | 致命的算术错误(浮点数运算,溢出,及除数为0 错误) |
9) SIGKILL | 用来立即结束程序的运行(不能为阻塞,处理,忽略) |
10) SIGUSR1 | 用户使用 |
11) SIGSEGV | 访问内存错误 |
12) SIGUSR2 | 用户使用 |
13) SIGPIPE | 管道破裂 |
14) SIGALRM | 时钟定时信号 |
15) SIGTERM | 程序结束信号(可被阻塞,处理) |
16) SIGSTKFLT | 协处理器栈堆错误 |
17) SIGCHLD | 子进程结束,父进程收到这个信号并进行处理,否则进程僵住 |
18) SIGCONT | 让一个停止的进程继续执行(不能被阻塞) |
19) SIGSTOP | 让一个进程停止执行(不能被阻塞,处理,忽略) |
20) SIGTSTP | 停止进程的运行(可以被处理和忽略) |
21) SIGTTIN | 当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行. |
22) SIGTTOU | 类似SIGTTIN,但在写终端时收到 |
23) SIGURG | 有紧急数据或者out-of-band 数据到达socket时产生 |
24) SIGXCPU | 超过CPU资源限定(可改变) |
25) SIGXFSZ | 当进程企图扩大文件以至于超过文件大小资源限制 |
26) SIGVTALRM | 虚拟时钟信号(计算的是该进程占用的CPU时间) |
27) SIGPROF | 时钟信号(进程用的CPU时间及系统调用时间) |
28) SIGWINCH | 窗口大小改变时发出 |
29) SIGIO | 文件描述符准备就绪,可以进行读写操作 |
30) SIGPWR | power failure |
31) SIGSYS | 非法的系统调用 |
实时信号:
34) SIGRTMIN | 35) SIGRTMIN+1 | 36) SIGRTMIN+2 | 37) SIGRTMIN+3 |
38) SIGRTMIN+4 | 39) SIGRTMIN+5 | 40) SIGRTMIN+6 | 41) SIGRTMIN+7 |
42) SIGRTMIN+8 | 43) SIGRTMIN+9 | 44) SIGRTMIN+10 | 45) SIGRTMIN+11 |
46) SIGRTMIN+12 | 47) SIGRTMIN+13 | 48) SIGRTMIN+14 | 49) SIGRTMIN+15 |
50) SIGRTMAX-14 | 51) SIGRTMAX-13 | 52) SIGRTMAX-12 | 53) SIGRTMAX-11 |
54) SIGRTMAX-10 | 55) SIGRTMAX-9 | 56) SIGRTMAX-8 | 57) SIGRTMAX-7 |
58) SIGRTMAX-6 | 59) SIGRTMAX-5 | 60) SIGRTMAX-4 | 61) SIGRTMAX-3 |
62) SIGRTMAX-2 | 63) SIGRTMAX-1 | 64) SIGRTMAX |
2. 常用快捷键
表 31 常用快捷键及说明
快捷键 | 产生信号及作用说明 |
---|---|
ctrl+c | 发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行 |
ctrl+z | 发送 SIGTSTP 信号给前台进程组中的所有进程,挂起进程而并非结束进程 |
ctrl+d | 特殊的二进制值,表示 EOF,作用相当于在终端中输入exit后回车 |
ctrl+/ | 发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件 |
ctrl+s | 中断控制台输出 |
ctrl+q | 恢复控制台输出 |
ctrl+l | 清屏 |
其实,控制字符都是可以通过stty命令更改的,可在终端中输入命令"stty -a"查看终端配置
关于挂起和恢复:
用户可以使用使用fg/bg操作恢复执行前台或后台的进程。fg命令在前台恢复执行被挂起的进程,此时可以使用ctrl+z再次挂起该进程,bg命令在后台恢复执行被挂起的进程,而此时将无法使用ctrl+z再次挂起该进程;
挂起的常用应用:
正在使用vi编辑一个文件时,需要执行shell命令查询一些需要的信息,可以使用ctrl+z挂起vi,等执行完shell命令后再使用fg恢复vi继续编辑你的文件(当然,也可以在vi中使用 !command 方式执行shell命令)
六、环境变量及相关命令
环境变量是用来定义系统运行环境参数的,比如用户的家目录、邮件存放位置等
表 32 常用变量及作用
变量名称 | 作用 |
---|---|
HOME | 用户的主目录 |
shell | 用户使用shell解释器的名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存地址 | |
LANG | 系统语言 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
命令在linux中的执行
- 第一步:判断用户是否以绝对/相对路径的方式输入命令(如:/bin/ls)如果该路径下有该命令则直接执行,没有则继续第二步。
- 第二步:判断用户输入的命令是否是用户自定义命令,举例说明一下:当用户自定义一个cp命令(命令内容为cd /root)那么cp命令就是“cd /root” 并非“复制”,确定了命令内容就会继续第三步。
- 第三步:bash解释器会判断用户输入的是内部命令还是外部命令,内部命令会直接执行,外部命令则继续第四步。
- 第四步:系统在多个路径查找用户输入的命令文件,而定义这些路径的变量就是 PATH,然后bash解释器会在这些路径里面逐个查找,找到就会执行没有找到就不会执行。所以外部命令的命令文件路径要写进PATH变量里,并且每个路径值以冒号间隔
① alias 命令
作用:用来创建用户自定义命令的命令
格式:alias 别名=命令
例如:
alias my_rm=rm
alias qq='run qq.bin'
alise a='sqlplus / as sysdba'
② unalias 命令
作用:取消用户自定义命令的命令
格式:unalias 用户自定义命令
例如:
unalias rm #一般为了防止用户误删文件rm命令其实是rm -i 的别名,取消掉后就不会询问用户是否删除
③ export 命令
作用:用于将变量全局化便于其他用户使用
格式:export 变量名
例如:
WORK=/home/work #声明一个变量保存work路径
export WORK #将变量WORK全局化
④ which 命令
作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
格式:which 命令/可执行文件
例如:
which cd #查看cd命令的命令文件位置
which which #查看which命令的命令文件位置
#命令执行结果(which命令是一个“别名命令”):
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
七、计划任务命令
① at 命令
作用:用于制定一次性计划任务
格式:at 时间
例如:在23:00关闭计算机
at 23:00
at > shutdown -h now
# ctrl+D结束编写计划任务
另外可以使用管道符编写
echo "shutdown -h now" | at 23:00
查看和删除计划:查看:at -l 删除:atrm 计划任务ID
② crontab 命令
crontab命令是调用系统默认启动的crond服务来创建计划任务,与at命令的区别是它可以创建长期(周期)计划任务
表 33 crontab 的参数及作用
参数 | 作用 |
---|---|
-e | 创建或编辑计划任务 |
-l | 查看计划任务 |
-r | 删除计划任务 |
-u | (管理员)编辑其他用户计划任务 |
计划任务文档的书写格式:分 时 日 月 星期 命令
例如:每周一、周五的5点打包/root目录
0 5 * * 1,5 /usr/bin/tar -zvcf backup.tar.gz /root
计划任务的特别说明:
- 命令一定要用绝对路径,例如tar命令:/usr/bin/tar
- 用#号开头添加注释信息
- 计划任务中“分”字段必须有值,不能为空或是星号
- “日”与“星期”字段不能同时使用,否则会发生冲突
另外:
- 逗号(,):表示多个时间段,例如5,7,10月:5,7,10
- 减号(-):表示一段连续的时间周期,例如周一到周五:1-5
- 除号(/):表示时间间隔,例如每隔两分钟的写法:*/2
八、重定向命令
重定向包括 输入重定向 和 输出重定向
简单来说,输入重定向就是把文件内容导入到命令中;输出重定向就是把原本要输出到屏幕的内容写入文件中。
重定向分为3中:
- 标准输入重定向(0):默认从键盘输入,也可以从文件或命令中输入
- 标准输出重定向(1):默认输出到屏幕
- 错误输出重定向(2):默认输出到屏幕
表 34 输入重定向中用到的符号及作用
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 终止符 | 从标准输入中读入,直到遇到终止符停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
表 35 输出重定向中用到的符号及作用
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到文件(清空) |
命令 >> 文件 | 将标准输出重定向到文件(追加) |
命令 2> 文件 | 将错误输出重定向到文件(清空) |
命令 2>> 文件 | 将错误输出重定向到文件(追加) |
命令 >> 文件 2> &1 或 命令 &>> 文件 | 将标准输出和错误输出共同写入文件(追加) |
例如:
1.统计文件内容行数
wc -l < 1.txt
相当于:
cat 1.txt | wc -l
2.利用重定向向文件写入内容:
#清空1.txt文件的内容后将“linux常用命令”写入1.txt
echo "linux常用命令" > 1.txt
#在1.txt文件内容后面追加“linux常用命令”
echo "linux常用命令" >> 1.txt
#将错误信息写入1.log文件(假设文件 777.txt 不存在)
ls -l 777.txt 2>> 1.log #777.txt不存在,那么ls -l 命令就会报错
3.利用重定向实现切换用户去执行命令
su - root
systemctl disable firewalld
su - oracle <<EOF
lsnrctl start
sqlplus / as sysdba <<!
startup
exit
!
sqlplus -S scott/scott<<A
set heading off
set verify off
set pagesize 100
set linesize 500
select * from emp;
exit
A
EOF