文章目录
一、快捷键
Ctrl+a #光标快速到行首,等同于Home
Ctrl+e #光标快速移到行尾,等同于End
Ctrl+b #光标左移一个字母
Ctrl+f #光标右移一个字母
Ctrl+z #把命令放入后台
Ctrl+c #强制终止当前命令
Ctrl+d #退出当前登录,等同于exit/logout
Ctrl+l #清屏
Crtl+r #根据关键字从历史中搜索命令
Ctrl+左右方向键 #跳转单词
二、cp
语法
cp [options] source dest
参数
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
举例
使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下
新文件夹不存在
$ cp –r test/ newtest
新文件夹已存在
$ cp –r test/* newtest/
三、cd
- 跳到目前目录的上一层目录
cd \.\.
- 后退到上个目录
cd -
- 跳到自己的 home 目录
cd ~
四、ls / chmod
通过ls命令可查看文件的权限
ls -ll
对应说明如下图:
通过chmod命令可以更改文件的读写执行权限
chmod [-cfvR] [--help] [--version] mode file...
参数
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他用户,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
举例
- 将文件 file1.txt 设为所有人可读
chmod a+r file1.txt
- 将文件 file1.txt 与 file2.txt 设为该文件拥有者、与其所属同一个群体者可写入,但其他用户则不可写入
chmod ug+w,o-w file1.txt file2.txt
五、wait
使用 wait 是在等待上一批或上一个脚本执行完(即上一个的进程终止),再执行wait之后的命令。参数为进程或作业标示,即指定进程号或者作业号。
1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0
2.如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务
3.在shell中使用wait命令,相当于高级语言里的多线程同
六、sleep
sleep支持的时间单位有秒、分、时,默认的单位是秒:
sleep 1
sleep 1s
sleep 1m
sleep 1h
七、history
history命令用于查看历史的命令
history命令看到的历史记录都默认保存在~/.bash_history,如root用户在/root/.bash_history
平时使用的Linux命令都会记录在缓冲区中,包括history命令所执行的历史命令管理,而不是直接操纵.bash_history文件
退出shell时,shell进程会把历史记录缓冲区的内容写回到.bash_history
语法
# history 选项 参数
参数
-n #显示最近的n条记录
-a #将历史命令缓冲区中命令写入历史命令文件中
-c #将目前的shell中的所有 history 内容全部消除,实际为假删除
-r #将历史命令文件中的命令读入当前历史命令缓冲区
-w #将当前历史命令缓冲区命令写入历史命令文件中
-d #删除历史记录中指定的行
举例
- 获取最近n条历史记录
[root@localhost ~]# history 2
342 cd
343 history 2
- 删除某行历史记录
[root@localhost ~]# history -d 25
- 清空历史记录(仅删除缓冲区中的历史记录)
[root@localhost ~]# history -c
[root@localhost ~]# history
1 history
- 将当前缓存区中的历史记录写入文件
[root@localhost ~]# history -w
- 执行最后一次历史命令
[root@localhost ~]# !!
history 2
342 cd
343 history 2
- !+数字,执行历史中第n条命令
[root@localhost ~]# !30
cd /etc/sysconfig/network-scripts/
- !+字符串,搜索历史命令中最近一个以该字符开头的命令
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# !cd
cd /etc/sysconfig/network-scripts/
- 使用 set 命令隐藏/恢复记录历史命令
set +o history #表示开始隐藏
set -o history #表示结束隐藏
八、last
last原本被设计来显示某个特定用户的登录历史,这条命令实际上显示的是最近几天的系统运行时间。
在Linux中有一个特别的伪用户reboot,它会在系统重启的时候立即自动登录。通过检查reboot用户的登录历史,就可以检查最后的重启时间。
# last reboot
reboot system boot 2.6.32-431.el6.i Wed Jul 30 13:44 – 21:39 (46+07:55)
reboot system boot 2.6.32-431.el6.i Sun Apr 13 14:28 – 09:27 (107+18:59)
reboot system boot 2.6.32-431.el6.i Tue Mar 25 22:27 – 14:19 (18+15:52)
九、who
who 用于查看当前所有用户
语法
who [OPTION]... [ FILE | ARG1 ARG2 ]
参数
-b #展示上一次系统启动时间
-d #打印死掉的进程
-H #打印列首
-l #打印系统登录进程
-m #仅与标准输入关联的主机名和用户
-p #打印由初始化产生的活动进程
-q #展示所有登录用户信息和用户总数
-r #打印当前的运行级别
-s #等于无选项的情况(默认)
-t #打印上次系统时钟更改
-w #增加显示用户的消息状态,+、-、?
-u #列出登录的用户名
pkill -kill -t userName #踢出指定用户
十、which / whereis
- which 命令可以找出相关命令是否已经在搜索路径中。which 命令不显示用户没有执行权限的文件。
- whereis 命令搜索更大范围的系统目录。
十一、uname
uname命令显示多个系统信息,包括Linux内核体系结构,名称版本和发行版。
- 显示全部信息
uname -a
- 显示内核版本、系统版本、cpu信息
uname -srm
十二、lscpu / top / free
- 查看 cpu 的相关信息
lscpu
- 查看进程运行情况
top
top命令能够清晰的展现出系统的状态,而且它是实时的监控,按q退出。
Tasks行展示了目前的进程总数及所处状态,要注意zombie,表示僵尸进程,不为0则表示有进程出现问题。
Cpu(s)行展示了当前CPU的状态,us表示用户进程占用CPU比例,sy表示内核进程占用CPU比例,id表示空闲CPU百分比,wa表示IO等待所占用的CPU时间的百分比。wa占用超过30%则表示IO压力很大。
Mem行展示了当前内存的状态,total是总的内存大小,userd是已使用的,free是剩余的,buffers是目录缓存。
Swap行同Mem行,cached表示缓存,用户已打开的文件。如果Swap的used很高,则表示系统内存不足。
在top命令下,按1,则可以展示出服务器有多少CPU,及每个CPU的使用情况。一般而言,服务器的合理负载是CPU核数*2。也就是说对于8核的CPU,负载在16以内表明机器运行很稳定流畅。如果负载超过16了,就说明服务器的运行有一定的压力了。
在top命令下,按shift + “c”,则将进程按照CPU使用率从大到小排序,按shift+“p”,则将进程按照内存使用率从大到小排序,很容易能够定位出哪些服务占用了较高的CPU和内存。
- 查看内存使用情况
free -m
- 查看IO开销
iostat -x 1 10
iostat 用于监控输入输出状态,-x表示显示所有参数信息,1表示每隔1秒监控一次,10表示共监控10次。
其中rsec/s表示读入,wsec/s表示每秒写入,这两个参数某一个特别高的时候就表示磁盘IO有很大压力,util表示IO使用率,如果接近100%,说明IO满负荷运转。
十三、> / >>
- 覆盖文件
输出到文件中,如果文件存在,则原来的内容被清空;不存在则创建文件
command > out.file
- 追加文件
把输出追加到文件中,如果文件存在,追加到末尾;不存在则创建文件
command >> out.file
十四、2>&1
command > out.file 2>&1
0 ,1, 2分别代表stdin标准输入,stdout标准输出,stderr标准错误。
&与1结合代表标准输出,2>&1 将标准出错重定向到标准输出。这里的标准输出已经重定向到了out.file文件,所以标准出错也会输出到out.file文件中。
十五、; / && / ||
- 使用 “;” 符号运行多条指令
$ cmd1 ; cmd2 ; cmd3
首先执行cmd1,然后执行cmd2,最后执行cmd3
无论输入多少条指令都会按顺序一一执行,就算有指令执行失败也会继续执行后面的指令
- 使用 “&&” 符号运行多条指令
$ cmd1 && cmd2 && cmd3
首先执行cmd1
cmd1执行成功之后才执行cmd2,cmd2执行成功之后再执行cmd3
前一条指令执行失败,则后面的指令都不会执行
- 使用 “||” 符号运行多条指令
$ cmd1 || cmd2 || cmd3
首先执行cmd1
当cmd1执行失败时执行cmd2,当cmd2失败时执行cmd3
前一条指令执行成功,则后面的指令都不会执行
十六、& / nohup
- &
当在前台运行某个作业时,终端会被该作业占据,可以在命令后面加上 & 实现后台运行,作业在后台运行一样会将结果输出到屏幕上。
需要用户交互的命令不要放在后台执行,如果放在后台运行的作业会产生大量的输出,最好把它的输出重定向到某个文件中。
该命令的一般形式为:
command &
- nohup
使用&命令后,一但把当前控制台关掉(退出账户),作业就会停止运行。
nohup(no hang up)命令可以在退出帐户之后继续运行相应的进程。
该命令的一般形式为:
nohup command &
-
使用nohup命令提交作业,在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非通过重定向另外指定了输出文件。
-
使用nohup之后有可能在当前账户非正常退出或结束的时候,命令还是会自己结束。所以在使用nohup命令后台运行后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。
十七、nice/renice
进程优先级的值(也称为 nice 值 / NI值),Linux 系统中每个进程都有一个介于 -20 到 19 之间的 nice 值。默认情况下,进程的 nice 值为 0。
- nice 命令可以给要启动的进程赋予 NI 值,但是不能修改已运行进程的 NI 值。
nice [-n NI值] 命令
- renice 命令可以在进程运行时修改其 NI 值,从而调整优先级。
renice [NI值] PID
十八、tar
最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,通常以 .tar 结尾。生成 tar 包后,就可以用其它的程序来进行压缩了,也可以在打包或解包的同时调用其它的压缩程序,比如 gzip、bzip2 等。
参数
参数 -f 是必须的
-f: 指定包的文件名
以下五个参数相互独立,可以和别的命令连用,但只能使用其中一个
-c: 建立新的压缩包
-x:解压
-t:查看压缩包中的所有文件
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
以下参数根据需要在压缩或解压档案时可选
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
举例
1.tar打包
a.将所有 .jpg 的文件打成一个名为 all.tar 的包
tar -cf all.tar *.jpg
b.将所有 .gif 的文件增加到 all.tar 的包中
tar -rf all.tar *.gif
c.更新原来 tar 包 all.tar 中的 logo.gif 文件
tar -uf all.tar logo.gif
d.列出 all.tar 包中所有文件
tar -tf all.tar
e.解出 all.tar 包中所有文件
tar -xf all.tar
2.tar调用
gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果,与 gzip 相对的解压程序是 gunzip。
tar 中使用 -z 这个参数来调用gzip。
a.生成 tar 包的同时用 gzip 压缩,得到 all.tar.gz
tar -czf all.tar.gz *.jpg
b.用 gunzip 解压
tar -xzf all.tar.gz
十九、let
let命令是Linux中的一个内建命令,使用let命令可以方便地进行数值计算,并将结果保存到一个变量中。
语法格式
let expression
参数说明
expression:要进行数值运算或赋值的表达式。
let命令支持常见的数值运算符,如加法(+)、减法(-)、乘法(*)、除法(/)和求余(%)。运算表达式可以包含变量、常数和运算符,可以使用括号来改变运算的优先级。
let命令执行完数值运算后,会将结果输出到标准输出,可以通过重定向或管道将结果传递给其他命令进行处理。除了进行数值运算,let命令还可以用于赋值操作。在赋值操作中,等号左边是一个变量名,等号右边是一个数值表达式。
错误情况
如果expression中包含非法的字符或语法错误,会导致命令执行失败,并输出错误信息,let不支持字符串操作。
如果expression中的运算结果超出了Shell脚本所能表示的范围,会导致溢出错误。
如果expression中的变量未定义或为空,会导致命令执行失败,并输出错误信息。
请注意,let命令不支持带有空格的表达式,如果表达式中有空格,需要使用引号将整个表达式括起来。另外,let命令只能进行数值运算,不支持字符串操作。如果需要进行字符串操作,可以使用其他命令或工具来实现。
在进行浮点数运算时,let命令会自动截断结果,只保留整数部分。如果需要保留小数部分,可以使用其他工具或技术来实现。
在进行赋值操作时,等号左右两边不能有空格。正确的写法是:let x=5+3,而不是let x = 5 + 3。
以上内容来源于网络知识总结,如有侵权请私信联系立即删除:)