一.帮助命令
1.man获取帮助信息
# man[命令或者配置文件] //获取帮助信息(外部命令)
列如 :
# man ls //查看ls命令的帮助信息
2.help获取shell内置命令的帮助信息
shell:可以看做是一个命令解释器(终端输入命令,shell进行解释并最终交给内核执行)
一部分基础功能的系统命令是直接内嵌在shell中的,系统加载启动之后会随着shell一起加载,常驻系统内存中。这部分命令被称为“内置命令”;相应的其他命令被称为外部命令。
# help [命令] //获取shell内置命令的信息
# 命令 --help //查看外部命令
列如 :
# help cd //查看cd命令的帮助信息
3.怎么判断命令的类型
# type [命令] //查看命令的类型
列如 :
# type cd //查看cd命令的类型
# type useradd //查看useradd命令的类型
4.使用man查看内置命令
# man -f cd //查看cd命令的信息
# man 3tcl cd//查看3tcl里面的cd命令信息
5.常用快捷键
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl + l | 清屏等同于clear ;彻底清屏 reset |
tab | 提示(防止敲错) |
上下键 | 查找执行过的命令 |
二.文件目录类命令
绝对路径:从根目录开始都显示出来
/
开头。例如/usr/local/mysql
相对路径:就是相对当前你所在路径开始算。例如你现在进入到usr目录下,然后你想到达mysql目录,你只需要local/mysql
1.pwd 显示当前工作目录的绝对路径
# pwd //显示当前工作目录的绝对路径(print working directory)
2.cd 切换路径
# cd [参数] //切换路径(change directory)
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd | 返回自己的家目录 |
cd - | 回到上一次所在的目录 |
cd . . | 返回上一级目录 |
3.ls 列出目录的内容
# ls [参数][目录或文件] //列出目录内容(list)
参数 | 功能 |
---|---|
-a | 全部的文件,连同隐藏文档(开头为.的文件) |
-l | 长数据串列出,包含文件的属性与权限等等数据;(等价于 ll ) |
4.mkdir 创建一个新的目录(文件夹)
# mkdir [选项] //建立目录(make directory)
参数 | 功能 |
---|---|
-p | 创建多层目录 |
举例:
# mkdir xinxin //建立一个名字为xinxin的目录
# mkdir xin1 xin2 //建立两个目录名字分别为xin1和xin2
# mkdir -p xin1/xin2 //创建多层目录,xin1目录包含xin2
5.rmdir 删除目录(文件夹)
# rmdir [选项] //要删除的空目录(remove directory),如果删除的目录下面包含目录或文件都会删除失败
参数 | 功能 |
---|---|
-p | 删除多层空目录 |
举例:
# rmdir xinxin //删除名字为xinxin的空目录
# rmdir xin1 xin2 //删除两个空目录名字分别为xin1和xin2
# rmdir -p xin1/xin2 //删除多层空目录,会先删除xin2,然后删除xin1
6.touch 创建空文件
# touch 文件名称 //创建空文件
举例:
# touch /home/jjr/hello // 在/home/jjr文件夹下创建一个hello文件。前提是/home/jjr文件夹存在
7.cp 复制目录或者文件
# cp [选项] source dest //复制source到dest
选项 | 功能 |
---|---|
-r | 递归复制整个文件夹 |
举例:
# cp initial-setup-ks.cfg /home/jjr // 把initial-setup-ks.cfg文件复制到,/home/jjr目录下
# cp initial-setup-ks.cfg /home/jjr/hello // 把initial-setup-ks.cfg文件复制到hello文件,hello文件内容和initial-setup-ks.cfg一致
# cp -r xinxin/ /home/jjr/ // 把xinxin文件夹所有内容复制到/home/jjr/文件夹下
8.rm 删除目录或者文件
# rm [选项] 目录或文件名 //删除目录或者文件
选项 | 功能 |
---|---|
-r | 递归删除整个文件夹 |
-f | 强制删除,不提示确认 |
-v | 显示指令的详细执行过程 |
举例:
# rm -rf /* //千万别试,试试就逝世
# rm -rf ./* //删除当前目录下的所有文件
# rm /home/jjr/hello // 删除hello文件
# rm -r home //删除home文件夹
9.mv 移动文件与目录或重命名
# mv 旧名字 新名字 //重命名
# mv 旧位置 新位置 //移动
举例:
# mv hello /home/jjr/ //把hello文件移到/home/jjr/目录下
# mv hello hello1 //把hello文件重命名为hello1
10.cat 查看文件内容
# cat [选项] 文件名 //查看文件内容(针对小文件)
选项 | 功能 |
---|---|
-n | 显示所有行的行号,包括空行 |
11.more 文件内容分屏查看器
# more 文件名 //查看文件内容
选项 | 功能 |
---|---|
空格键 | 下一页 |
Enter | 下一行 |
f | 向下滚动一屏 |
b | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
q | 退出查看文件 |
12.less 分屏显示文件内容
和
more
命令相似,但是比more
功能强大,不同的是less
命令不是一次加载全部的内容,而是根据显示的内容去加载,大于很大的文件具有较高的效率
# less 文件名 //查看文件内容
选项 | 功能 |
---|---|
空格键 | 下一页 |
上移动键 | 上一页 |
下移动键 | 下一页 |
G | 直达底部 |
g | 直达头部 |
/ 【字串】 | 向下搜寻【字串】;n:向下查找;N:向上查找 |
?【字串】 | 向上搜寻【字串】;n:向下查找;N:向上查找 |
q | 退出查看文件 |
13.echo 输出内容到控制台
# echo [选项] 输出内容 //输出内容到控制台
-e 支持反斜线控制的字符转换
控制字符 | 功能 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是tab键 |
举例:
# echo hello zhangsan //控制台输出hello zhangsan,如果你要想增加字符之间的距离,那就加上双引号
# echo hello zhangsan //控制台换行输出hello zhangsan
# echo $USER //执行系统环境变量,如果不知道有什么环境变量,那就echo $ 按下Tab键就行了,就会提示出来所有的变量。
14.> 输出重定向和 >> 追加
# ls -l > 文件 //将ls -l查看的内容写到文件中(覆盖写)
# ls -l >> 文件 //将ls -l查看内容追加到文件中
# cat 文件1 > 文件2 //将文件1的内容复制到文件2
# echo 内容 >> 文件 //将内容追加到文件中
-e 支持反斜线控制的字符转换
控制字符 | 功能 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是tab键 |
15.head 显示文件头部内容
# head 文件 //显示文件头部10行信息
# head -n 5 文件 //显示文件头部5行信息,5行可以是任意行
参数 | 功能 |
---|---|
-n 行数 | 显示头几行的行数 |
16.tail 显示文件尾部内容
# tail 文件 //显示文件尾部10行信息
# tail -n 5 文件 //显示文件尾部5行信息,5行可以是任意行
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
17.ln 软连接
软连接和windows里的快捷方式类似
# ln -s [文件或者目录][软连接名] //给原文件创建一个软连接
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
18.history 查看已经执行过的历史命令
# history -s [文件或者目录][软连接名] //查看已经执行过的历史命令
三.时间日期类命令
1.date 显示当前时间
# date [参数][format] //显示当前时间
# date +%Y //当前年份
# date +%m //当前月份
# date +%d //显示当前是哪一天
# date "+%Y-%m-%d %H:%M:%S" //显示年月日时分秒
# date +%s //显示当前时间的时间戳 (从1970.01.01开始到当前时间)
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
2.date 显示非当前时间
# date -d "1 days ago" //显示前一天时间
# date -d "-1 days ago" //显示后一天时间
3.date 设置系统时间
# date -s "字符串时间" //设置系统时间(格式为:%Y-%m-%d %H:%M:%S 例如:2017-03-18 12:34:22)
4.cal 查看日历
# cal [参数] //显示本月日历
参数 | 功能 |
---|---|
具体年数 | 显示这一年的日历 |
-y | 显示本年一年的日历 |
举例:
# cal -3 //前一个月,本月,下个月一起显示
# cal -m //周一开头
四.用户权限类命令
1.useradd 添加新用户
# useradd 用户名 //添加新用户
# passwd 用户名 //添加对应用户的密码
# id 用户名 //查看用用户信息
# cat /etc/passwd //查看创建了那些用户
# userdel 用户名 //删除用户
# userdel -r 用户名 //删除用户包括用户下的文件
2.su 切换用户
# su 用户名 //切换用户(root用户切换不用输密码,普通用户切换需要输入密码)
# who am i //查看最外层会话是哪个用户(最外层会话就是指你初始登陆的那个 root)
# whoami //查看当前会话是哪个用户(当前会话就是指你现在使用的用户 xiaoming)
3.sudo 设置普通用户具有root权限
# sudo 命令 //设置普通用户具有root权限
使用root用户去修改 /etc/sudoers 文件,然后使用sudo就可以正常用了。
4.groupadd 新增组
# groupadd 组名 //新增组
# groupmod -n 新组名 旧组名 //修改组名
# groupdel 组名 //删除组
# useradd -g 组名 用户名 //添加新用户到某个组
# usermod -g 组名 用户名 //修改用户的用户组
举例:
# usermod -g tongluowan shanji //修改shanji用户到tongluowan用户组
5.权限详解
ls -l
或ll
命令每行列出的信息依次为:文件类型与权限 链接数 创建者 文件属组 文件大小用byte表示 建立或者最近修改的时间 文件名称
如果是文件的话:链接数指的是硬链接数。
如果是目录的话:链接数指的子文件夹个数。
(1)文件
r(read):代表可以读,查看。
w(write):可以修改,但是不代表可以删除该文件,想删除文件,必须对该文件所在的目录有写的权限,才能删除该文件。
e(execute):可以被系统执行。
(2)目录
r(read):可以读取,ls查看目录下的内容。
w(write):可以修改,可以在目录内新建和删除文件或重命名目录。
e(execute):可以进入目录
6.chmod 改变权限
第一种
# chmod [u/g/o/a][+-=][rwx] 文件或目录 //改变权限
第二种
# chmod [421][421][421] 文件或目录 //改变权限 r=4,w=2,x=1,rwx=7
参数 | 功能(第一种参数的解释) |
---|---|
u/g/o/a | u代表user(创建这个文件人的权限),g代表group(同一组的权限),o代表other(其他用户的权限),a代表all(u,g,o) |
+ - = | +代表增加某个权限,-是减掉某个权限,=是设置权限等于啥 |
rwx | r可读,w可写,x可运行 |
第一种举例:
# chmod u=rw 文件或目录 //修改u的权限为rw
# chmod o+r 文件或目录 //o增加权限r
# chmod a-w 文件或目录 //a减掉权限w
第二种举例:
# chmod 751 文件或目录 //u的权限:rwx,g的权限:r-x,o的权限:--x
# chmod -R 777 目录 //修改目录及里面的所有文件(ugo)都修改为rwx(可读可写可执行)
7.chown 改变所有者
# chown [选项][用户] 文件或目录 //改变文件或目录的所有者(u)
选项 | 功能 |
---|---|
-R | 递归操作 |
举例:
# chown jjr hello //改变hello的所有者为jjr用户
8.chgrp 改变所属组
# chgrp [选项][用户] 文件或目录 //改变文件或目录的所有组(g)
举例:
# chgrp tongluowan hello //改变hello的所有组为tongluowan
五.搜索查找类命令
1.find 查找文件或目录
# find [搜索范围][选项] //指的目录向下递归的遍历其各个子目录,显示在终端
选项 | 功能 |
---|---|
-name | 按照文件名查找 |
-user | 按照用户名查找 |
-size | 按照文件大小查找,b-块(512字节),c-字节,w-字(2字节),k-千字节,M-兆字节,G-吉字节 |
举例:
# find -name hello //查找文件名称为hello的目录
# find /root -size +10M //查找/root目录下文件大于10M的文件
2.locate 快速定位文件路径
由于
locate
命令是基于数据库进行查询,所以第一次运行期,必须使用updatedb
命令创建locate数据库
# locate 搜索文件 //搜索文件
3.grep 过滤查找及 ‘|’ 管道符
管道符,‘|’,表示将前一个命令的处理结果输出传递给后面的命令处理
# grep [选项][查找的内容][源文件] //过滤查找
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
举例:
# grep -n boot initial-setup-ks.cfg //在initial-setup-ks.cfg文件查找boot字符串,并显示行号
ls | grep .cfg //查找后缀名为.cfg的文件
六.压缩和解压类命令
1.gzip 压缩和gunzip 解压
- 只能压缩文件不能压缩目录
- 不保留原有文件
- 多个文件会产生多个压缩包
# gzip 文件名 //压缩文件,只能将文件压缩为 *.gz文件
# gunzip 文件.gz //解压文件命令
2.zip 压缩和unzip 解压
# zip [选项] XXX.zip 压缩的内容 //压缩文件和目录
# unzip [选项] XXX.zip //解压缩文件
zip 选项 | 功能 |
---|---|
-r | 压缩目录 |
unzip 选项 | 功能 |
---|---|
-d | 解压后存放到那个目录 |
3.tar 打包
# tar [选项] XXX.tar.zip 打包的内容 //打包目录,文件格式为 *.tar.zip
选项 | 功能 |
---|---|
-c | 产生 .tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包 .tar文件 |
-C | 解压到指定文件夹 |
举例:
# tar -zcvf mytar.tar.zip tar -zcvf mytar.tar.zip initial-setup-ks.cfg hello xinxin/ //将initial-setup-ks.cfg和hello文件和xinxin目录一起打包压缩成 mytar.tar.zip文件
七.磁盘管理类命令
1.du 查看文件和目录占用的磁盘空间
# du [选项] 目录/文件 //查看目录下每个目录和文件的磁盘使用情况(dist usage)
选项 | 功能 |
---|---|
-h | 容易阅读的GBytes,MBytes,KBytes等格式自行显示 |
-a | 不仅查看子目录大小,还包括文件 |
-c | 显示所有文件和子目录大小,显示总和 |
-s | 只显示总和 |
- - man-depth=n | 指定统计子目录的深度为第 n 层 (- -max-depth=1(只显示该目录下一级子目录)) |
2.df 查看磁盘空间使用情况
# df [选项] //查看磁盘空间使用情况(dist free)
选项 | 功能 |
---|---|
-h | 容易阅读的GBytes,MBytes,KBytes等格式自行显示 |
3.lsblk 查看设备挂载情况
# lsblk [选项] //查看设备挂载情况
选项 | 功能 |
---|---|
-f | 查看详细的设备挂载情况,显示文件系统信息 |
4.mount 挂载 和 umount 卸载
# mount [options][device][dir] //挂载设备
# umount 设备文件名或挂载点 //卸载设备
选项 | 功能 |
---|---|
options | 主要用来描述设备或档案的挂接方式。 loop:用来把一个文件当成硬盘分区挂接上系统; ro:采用只读方式挂接设备; rw:采用读写方式挂接设备; |
device | 要挂接的设备 |
dir | 设备在系统上的挂接点(目录名) |
# vim /etc/fstab //打开设置开机自动挂载文件
查看挂载type
5.fdisk 分区
在root用户下才能使用
# fdisk -l //查看磁盘分区详情
# fdisk 硬盘设备名 //对新增硬盘进行分区操作 (/dev/ 都在这个目录下)最多有16个分区
八.进程管理类命令
1.ps 查看当前进程系统状态
# ps aux | grep xxx //查看系统中所有进程(process status)
# ps -ef | grep xxx //可以查看子父进程之间的关系
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
ps aux
显示信息说明(想查看进程的CPU占用率和内存占用率,可以使用aux)
-
USER:那个用户产生。
-
PID:进程的ID号。
-
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源。
-
%MEM:该进程占物理内存的百分比,占用越高,进程越耗费资源。
-
VSZ:该进程占用虚拟内存的大小,单位KB。
-
RSS:该进程占用实际物理内存的大小,单位KB。
-
TTY:该进程是在那个终端运行的。 对于CentOS来说 ,? 代表没有终端,tty1 是图形化终端,tty2-tty6 是本地的字符界面终端,pts0-pts255代表虚拟终端。
-
STAT:进程状态。 R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示、<:优先级比较高、N:优先级比较低。
-
START:该进程的启动时间。
-
TIME:该进程占用CPU的运算时间,注意不是系统时间。
-
COMMAND:产生此进程的命令名。
ps -ef
显示信息说明(想看父进程的PID可以使用-ef)
- PPID:父进程的ID。
- C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高。
2.kill 终止进程
# kill [选项] 进程号 //通过进程号杀死进程
# killall 进程名称 //通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用(谨慎使用)
选项 | 功能 |
---|---|
-9 | 强制进程立马停止 |
3.pstree 查看进程树
# pstree [选项] //查看进程树
# yum install pstree //安装pstree命令(pstree要是能使用就不用安装了)
选项 | 功能 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
4.top 实时监控系统进程状态
# top [选项] //实时监控系统进程状态
选项 | 功能 |
---|---|
-d 秒数 | top隔几秒更新。默认是3秒在top命令的交互模式当中可以执行命令 |
-i | 不显示任何闲置和僵尸进程 |
-p | 通过指定进程ID来监控某个进程的状态 |
5.netstat 显示网络状态和端口占用信息
# netstat -anp | grep 进程号 //查看该进程网络信息
# netstat -nlp | grep 端口号 //查看网络端口号占用情况
选项 | 功能 |
---|---|
-a | 显示所有正在监听和未监听的套接字 |
-n | 拒绝显示别名,能显示数字的全部转化为数字 |
-l | 仅列出在监听的服务状态 |
-p | 显示那个进程在调用 |
九.系统定时类命令
1.crontab 定时任务设置
# crontab [选项] //定时任务设置
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有crontab任务 |
参数 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时中的第几分钟 | 0-59 |
第二个 * | 一天中的第几个小时 | 0-23 |
第三个 * | 一个月中的第几天 | 1-31 |
第四个 * | 一年中的第几个月 | 1-12 |
第五个 * | 一周中的星期几 | 0-7 (0和7都代表星期天) |
* | 代表任何时间 | 比如第一个X改为*(就是一小时中每分钟都执行) |
, | 代表不连续时间 | 比如:0 8,12,16 * * * (每天8,12,16点都执行一次命令) |
- | 代表连续的时间 | 比如:0 5 * * 1-6(周一到周六凌晨5点0分执行命令) |
*/n | 代表每隔多久执行一次 | 比如:*/10 * * * *(代表每隔十分钟就执行一次) |
# crontab -e //会打开vim编辑器
* * * * * 执行的任务
*/n * * * * echo "hello,world" >> xinxin //每隔一分钟就把hello,world写进xinxin文件
十.软件包管理
1.RPM(RedHat Package Manager) 基于CentOS
安装的时候会有依赖关系,你下载下来可能依赖于别的软件,你还得再去下载依赖的软件,所以不是很方便。
# rpm -qa //查询所安装的所有rpm软件包
# rpm -qa | grep XXX //查询包含XXX的的rpm软件包
# rpm -e 软件包 //卸载软件包
# rpm -e --nodeps 软件包 //不考虑依赖关系卸载软件包
# rpm -ivh RPM包全包 //安装软件包 -i安装,-v显示详细信息,-h显示进度条
# rpm -ivh --nodeps RPM包全包 //安装前不检查依赖 -i安装,-v显示详细信息,-h显示进度条
2.YUM(Yellow dog Update,Modified) 仓库配置
基于RPM,可以自动处理依赖关系(类似于maven)。
# yum [选项][参数] 软件包名 //操作软件包
选项 | 功能 |
---|---|
-y | 对所有问题都回答yes |
参数 | 功能 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查更新rpm软件包 |
remove | 删除指定rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |