目录
一、系统管理相关
top命令
在企业级开发中,开发人员(运维人员也会经常使用)常常为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行,持续查看的一个过程
语法:top (参数)
参数列表:
- -c 显示完整的命令
- -p (进程号) 显示指定进程的信息
列名介绍:
- PID — 进程id
- USER — 进程所有者
- PR — 进程优先级
- NI — nice值。负值表示高优先级,正值表示低优先级
- VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU — 上次更新到现在的CPU时间占用百分比
- %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)
ps命令
查看瞬时间的进程信息
语法:ps(参数)
参数列表:
- 不加参数 展示正在进行的进程
- -p (进程号) 查看指定进程信息
- -A 显示所有的进程信息
- -u (用户名) 查看指定用户信息
- -ef 查看进程全面的信息.
- a 显示用户下的进程信息
- u 以用户为主的格式来显示程序状况
- x 显示所有程序,不以终端机来区分
用法:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
列出了进程id, 线程id和cpu占有率,同时按照cpu占有率排序
列名介绍:
- UID:用户ID,实际输出的是用户名,如root
- PID:当前进程的ID
- PPID:当前进程的父进程ID
- C:当前进程占用的CPU的百分比
- STIME:当前进程启动到现在的时间
- TTY:当前进程在哪个终端上运行,若与进程无关,则显示为?,若为pts/0等,则表示由网络连接主机进程。
- CMD:命令的名称和参数
kill命令
用于杀死进程
语法:kill (参数) 【进程号】
参数列表:
不加参数 直接杀死进程,但是可能会出现杀不死的现象
-9 强制杀死进程
killall -u 【用户名】 杀死指定用户下的所有进程
shutdown命令
shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机
语法:shutdown [-t seconds] [-rkhncfF] time [message]
参数说明:
- -t seconds : 设定在几秒钟之后进行关机程序。
- -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
- -r : 关机后重新开机。
- -h : 关机后停机。
- -h now : 立即关机
- -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
- -c : 取消目前已经进行中的关机动作。
- -f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。
- -F : 关机时,强迫进行 fsck 动作。
- time : 设定关机的时间。
- message : 传送给所有使用者的警告讯息
reboot命令
reboot命令用于用来重新启动计算机
语法:reboot [-n] [-w] [-d] [-f] [-i]
参数说明:
- -n : 在重开机前不做将记忆体资料写回硬盘的动作
- -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
- -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
- -f : 强迫重开机,不呼叫 shutdown 这个指令
- -i : 在重开机之前先把所有网络相关的装置先停止
who命令
用于查看当前系统中还有谁在使用虚拟机,避免关机造成其他人无法使用的尴尬场面
语法:who -H 展示标题与在线用户信息
clear
clear命令用于清除屏幕,直接使用
二、目录相关
ls命令
查看文件夹下的目录与文件
语法:ls [选项] 目录名称
参数列表:
- -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用) 等同于ll指令
ll指令如下
可以查看文件夹下文件的详细信息, 从左到右 依次是:
- 权限:第一个字符如果是
d
表示目录 - 硬链接数:通俗的讲就是有多少种方式, 可以访问当前目录和文件
- 属主:文件是所有者、或是叫做属主
- 属组:文件属于哪个组
- 大小:文件大小
- 时间:最后一次访问时间
- 名称:文件的名称
pwd命令
当前位置的路径,直接使用即可
cd命令
进行路径的切换,后面可以跟着绝对路径或者相对路径
mkdir命令
创建文件夹
语法:mkdir (参数) 【目录名】
参数列表:
- -p 确保目录名称存在,不存在的就建一个
rmdir命令
删除文件夹
语法:rmdir (参数)【目录名】
参数列表:
-p 删除指定文件夹,如果删除子文件夹之后的父文件夹也为空,则一起删除掉,但是必须级联删除
cp命令
复制文件或者目录,复制目录必须配合-r使用
语法:cp (参数) 【source】 【directory】
参数列表:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
rm命令
删除文件或者目录,如果是删除目录要配合-r使用
语法:rm (参数) 【文件或者目录名字】
参数列表:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
mv命令
用于将目录或文件移动到新的路径
语法:mv (参数) 【文件或者目录名字】
参数列表:
- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
- -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
文件重命名
1、mv oldname.txt newname.txt
chown命令
修改文件或目录的属主和属组
语法:
- chown [–R] 属主名 文件名
- chown [-R] 属主名:属组名 文件名
chmod命令
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调
如果要通过chmod修改目录的权限,要配合-R 表示将目录内的文件也修改权限
如下图红框所示
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
参数列表:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
实例:
将w.txt文件的属主、属组的权限设置为可读可写可执行,其他设置为无权限
owner(user) = rwx = 4+2+1 = 7、 group = rwx = 4+2+1 = 7 、 others= --- = 0+0+0 = 0
方式一:chmod 770 w.txt
方式二:chmod u=rwx,g=rwx,o=- w.txt
三、文件管理相关
touch命令
touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法:touch (参数) 【文件名】
参数列表:
- -c 尝试打开一个文件,如果不存在则不创建新的文件
使用 touch 创建批量空文件(t1.txt-t10.txt):touch t-{1..10}.txt
vi与vim命令
使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作
vi/vim模式主要分为以下三种:
- 命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。
- 编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。
- 末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。
vim定位行
在日常工作中,有可能会遇到打开一个文件,并定位到指定行的情况
例如: 在开发时, 知道某一行代码有错误,可以快速定位到出错误代码的位置
这个时候,可以使用以下命令打开文件
语法:vim 【文件名】 +n 打开文件定位到第n行
vim异常处理
如果 vim异常退出, 在磁盘上可能会保存有 交换文件
下次再使用 vim 编辑文件时, 会看到以下屏幕信息
解决方案:
将后缀名为.swp的文件删除即可恢复
在末行模式下指令:
- :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
- :q! 当vim进入文件对文件内容有操作但不想保存退出
- :wq 正常保存退出
- :wq! 强行保存退出,只针对与root用户或文件所有人
- :set number 显示行号
- :/s 向下查找s
- :?s 向上查找s
- x 删除光标所在字符
- dd 剪切当前行(注意:是不加冒号的,点击键盘esc后dd就删除当前行)
- dnd 剪切包括当前行在内往下数共n行,例如d2d,删除当前行加上下一条,也就是两行
- yy 复制行
- p 粘贴
- r 替换当前字符
- R 持续替换字符,从当前字符开始一直往下替换,直到输入esc
- >> 向右缩进
- << 向左缩进
- . 重复当前命令
- * 向后查找当前光标所在单词
- # 向前查找当前光标所在单词
- gg 跳转到文件顶部
- G 跳转到文件末尾
- O 新一行
- ^ 行首
- $ 行末
- :数字 跳转到数字对应的行数
- u 撤销指令 类似后退
- ctrl r 恢复撤销的指令 类似前进
查看文件
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看小文件内容 |
02 | less -N 文件名 | less | 分频 显示大文件内容 |
03 | head -n 文件名 | 查看文件的前一部分 | |
04 | tail -n 文件名 | 查看文件的最后部分 | |
05 | grep 关键字 文件名 | grep | 根据关键词, 搜索文本文件内容 |
cat命令
cat会一下文件的所有内容 ,不建议打开太大的文件,会卡死
使用方法:
- 查看a.txt文件 : cat a.txt
- 查看a.txt文件,带行号 : cat -n a.txt
grep命令
类似于关键字查找
使用方法:
搜索a.txt中存在关键字【aaaa】的行 :grep aaaa a.txt
搜索a.txt中存在关键字【aaaa】的行 显示行号 :grep -n aaaa a.txt
忽略大小写搜索存在【aaaa】的行 : grep -i aaaa a.txt
搜索不存在关键字【aaaa】的行 : grep -v aaaa a.txt
查找指定进程信息【mysql】 : ps -ef |grep mysql
tail命令
用于查看末尾的数据,可以查后面几条,也可以查从第几条到末尾
使用方法:
动态查看a.txt中后面的数据 :tail -f a.txt
动态查看a.txt中后面10条数据(不间断,会一直监控):tail -10f a.txt
查看a.txt中后面10条的数据 :tail -10 a.txt
查看a.txt中从第2条到最后10条的数据 :tail -n +2 a.txt
less命令
less命令也是查看文件的,只不过它适合查看 内容较多的文本文件,它也可以用于分屏显示文件内容, 每次只显示一页内容,有点类似我们做分页查询,less是不预先挂载整个文件的,访问到才加载,而more是挂载整个文件
语法:less 【文件名】
less内的操作
- 输入【j】可以前进行
- 输入【k】可以后退行
- 输入【G】可以 移动到最后一行
- 输入【g】可以移动到第一行
- 输入【ctrl + F】 向前移动一屏(类似于我们在浏览器中的数据分页的下一页)
- 输入【ctrl + B】 向后移动一屏(类似于我们在浏览器中的数据分页的上一页)
- 输入【ctrl + D 】 向前移动半屏
- 输入【ctrl + U】 向后移动半屏
- 输入【j 】 向前移动一行,键盘向下方向键也可以
- 输入【k】向后移动一行,键盘向上方向键也可以
- 输入【q / ZZ】 退出 less 命令
- /str 查找文件中str的行
echo 命令
echo命令有点类似于我们在java se阶段学习的 System.out.print("hello")
但是,echo还有一个功能就是追加文件内容到文件,类似于我们在java se阶段学习的append文件流写入一样
用法:
- echo 【字符串】 将字符串输出到控制台,如果有空格,为避免歧义,要使用双引号
- echo 【字符串】 > 【文件名】 将字符串的内容覆盖到文件中
- echo 【字符串】 >> 【文件名】 将字符串的内容追加到文件中
- 【命令】 &>> 【文件名】 将命令失败的结果追加到文件中 cd snudw(不存在) &>> a.txt
awk命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。有字符串分割、分段输出等多种功能,这里只展示一个比较常用的
用法:cat a.txt | awk '/zhang|ww/' 查找a.txt中含有zhang或者含有ww的行
ln软连接命令
软连接其实就类似于我们在Windows中的【快捷方式】,由于有些文件的路劲过深,造成每次打开的时候都很困难,因此通过软连接简化打开方式
用法:ln -s 文件路径 软连接路径
例:ln -s /log/my.log /mlog 创建完毕之后通过cat /mlog也能查看my.log文件
find命令
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
用法:
- find . -name "*.gz" 将目前目录及其子目录下所有延伸档名是 gz 的文件查询出来
- find / -name 'czbk' 全盘搜索czbk目录也可以搜索文件夹
- find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
- find / -atime -2 # 查找在系统中最后48小时访问的文件
- find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
- find / -mtime -1 #查找在系统中最后24小时里修改过的文件
- find / -size +5M #查找大于5M的文件
- find / -type f #查找文件类型为普通文件的
- d: 目录
- c: 字型装置文件
- b: 区块装置文件
- p: 具名贮列
- f: 一般文件
- l: 符号连结
- s: socket
四、Linux备份压缩
gzip命令
gzip命令用于压缩文件。
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名
语法:gzip 【参数】 【文件或者目录】
参数列表:
- -d 解压缩
- -v 显示压缩过程
- -c 压缩到新文件,保存源文件
例如 gzip -c a.txt >> a.txt.gz 其中 使用> 是覆盖 使用>>是追加
- -r 压缩目录
gunzip命令
gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件
用法:gunzip 【文件名】 等同于 gzip -d 【文件名】
tar命令
tar的主要功能是打包、压缩和解压文件。
tar本身不具有压缩功能。他是调用压缩功能实现的 。
语法:tar 【参数】 【打包名】 【文件,可写多个】
参数列表:
打包:
- -c 打包
- -v 展示打包过程
- -f 指定打包名通常用.tar后缀
- -z 通过调用gzip进行压缩
解打包:
- -x 解打包
- -v 展示解打包的过程
- -f 指定压缩包的名字
- -z通过调用gunzip进行解压缩
- -t 这个参数不能和-x同时出现,表示仅仅是测试,为了查看有哪些文件,并不真的解打包
zip命令
zip命令就完全的相当于在Windows下面选中文件右键进行压缩了
文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
指令:zip 【参数】【压缩名】 【文件或者目录】
参数列表:
- -q 不展示压缩过程
- -r 压缩目录
unzip命令
unzip为.zip压缩文件的解压缩程序
语法:unzip 【参数】 【指定解压到目录】 【解压文件】
参数列表:
- 不加参数直接解压
- -l 查看压缩包里的信息,包括文件等,不解压
- -d 如果需要指定解压到目录,必须要配合-d使用
bzip2命令
.bz2格式是Linux中的另一种常用压缩格式,该格式的压缩算法更先进,压缩比更高,但是压缩的时间要比.gz长,.bz2格式的压缩命令是bzip2,bzip2不能压缩目录
压缩 :bzip2 【文件名】
解压: bunzip2 【文件名】