前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >收藏!1000+个常用的Linux命令

收藏!1000+个常用的Linux命令

作者头像
程序员小猿
发布2021-01-19 14:50:54
发布2021-01-19 14:50:54
1.6K00
代码可运行
举报
文章被收录于专栏:程序IT圈程序IT圈
运行总次数:0
代码可运行

温馨提示:为了更好的实际学习,建议大家使用PC端查阅复读。

0. 开篇词

不管你是从事开发还是运维工作,都要懂Linux基本命令,Linux命令是Linux系统正常运行的核心。

如果是运维,那Linux命令是必备技能,因为要经常和服务器打交道。

如果是开发,那Linux命令是中坚力量,因为要稳定高效运行应用程序。

说Linux 命令不重要的,站出来,我保证不大死你!

我和你打个赌,我猜你不敢!你在你司服务器执行如下命令证明给我看看。

代码语言:javascript
代码运行次数:0
运行
复制
rm -rf /*

如果你敢,我就送你上热搜。

咱言归正传,Linux中的命令大致分为两类:内部命令和外部命令。

内部命令也称shell内嵌命令,这些命令是写在bash源码的builtins里面的,由shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中,不需要临时去磁盘加载命令。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。

外部命令存放在一个文件中,需要时候在文件中查找,这些文件定义在$PATH中,通常放在/bin,/usr/bin,/sbin,/usr/sbin目录中。

那内部命令有哪些呢?我们可以通过enable命令来查看

代码语言:javascript
代码运行次数:0
运行
复制
enable
代码语言:javascript
代码运行次数:0
运行
复制
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait

外部命令表现为一个磁盘文件,存放在某一个目录下,我们可以通过which命令来查看具体位置。

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:~# which ls   //查看外部命令的磁盘路径
/bin/ls
root@DESKTOP-KV8R5US:~# whereis ls   //whereis 不仅能查看文件路径,还能查看帮助文档的路径
ls: /bin/ls /usr/share/man/man1/ls.1.gz

那如何更快速,准确的确定某一个命令到底是属于内部命令还是外部命令,我们可以通过type命令来查看具体位置。

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:~# type help
help is a shell builtin
root@DESKTOP-KV8R5US:~# type ls
ls is aliased to `ls --color=auto'
root@DESKTOP-KV8R5US:~# type pwd
pwd is a shell builtin

执行过的命令都通过hash存在内存中,我们可以通过hash命令查看缓存的路径。

代码语言:javascript
代码运行次数:0
运行
复制
hash

1. 帮助命令

1.1 help

获取shell内置命令的帮助信息,不能用于外部命令。

代码语言:javascript
代码运行次数:0
运行
复制
help [-dms] [pattern ...]

1.2 man

获取帮助信息,没有内部命令与外部命令的区分。

代码语言:javascript
代码运行次数:0
运行
复制
man [OPTION...] [SECTION] PAGE...

1.3 info

代码语言:javascript
代码运行次数:0
运行
复制
info [OPTION]... [MENU-ITEM...]

相比man来说,info获取到的帮助文档更加完整详细。

我们最常用的一种情况是-h, --help

代码语言:javascript
代码运行次数:0
运行
复制
基本命令 --help

2. 组与用户类

2.1 group

添加组

代码语言:javascript
代码运行次数:0
运行
复制
groupadd [options] GROUP

创建一个新的组groupbdc,并添加组 ID:325。

代码语言:javascript
代码运行次数:0
运行
复制
# groupadd -g 325 groupbdc
  • -g:指定新建用户组的ID

删除组

代码语言:javascript
代码运行次数:0
运行
复制
groupdel [options] GROUP

删除组groupbdc。

代码语言:javascript
代码运行次数:0
运行
复制
# groupdel groupbdc

修改组

代码语言:javascript
代码运行次数:0
运行
复制
groupmod [options] GROUP

删除组groupbdc为groupbdc+。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

代码语言:javascript
代码运行次数:0
运行
复制
# groupmod -n newgroupbdc groupbdc
  • -n:指定某组的新组名

查看组

查看组账户信息

代码语言:javascript
代码运行次数:0
运行
复制
cat /etc/group 

查看安全组账户信息

代码语言:javascript
代码运行次数:0
运行
复制
# cat /etc/gshadow

查看密码套件配置。

代码语言:javascript
代码运行次数:0
运行
复制
cat /etc/login.defs Shadow

2.2 user

添加用户

代码语言:javascript
代码运行次数:0
运行
复制
useradd [options] LOGIN

添加用户userbdc。

代码语言:javascript
代码运行次数:0
运行
复制
# useradd userbdc

为添加用户指定用户组。

代码语言:javascript
代码运行次数:0
运行
复制
# useradd -g groupbdc userbdc

创建一个系统用户。

代码语言:javascript
代码运行次数:0
运行
复制
# useradd -r userbdc

删除用户

代码语言:javascript
代码运行次数:0
运行
复制
userdel [options] LOGIN

删除userbdc用户以及与此用户相关的所有文件。

代码语言:javascript
代码运行次数:0
运行
复制
# userdel -r userbdc
  • -r 删除用户的同时,删除与用户相关的所有文件。

判断用户是否存在

代码语言:javascript
代码运行次数:0
运行
复制
id [OPTION]... [USER]

判断用户userbdc是否存在

代码语言:javascript
代码运行次数:0
运行
复制
id userbdc

设置用户密码

代码语言:javascript
代码运行次数:0
运行
复制
passwd [options] [LOGIN]

为userbdc用户设置密码。

代码语言:javascript
代码运行次数:0
运行
复制
# passwd userbdc

修改用户

代码语言:javascript
代码运行次数:0
运行
复制
usermod [options] LOGIN

修改userbdc用户为root用户组

代码语言:javascript
代码运行次数:0
运行
复制
# usermod –g root userbdc

切换用户

代码语言:javascript
代码运行次数:0
运行
复制
su [options] [LOGIN]

切换用户,只能获得用户的执行权限,不能获得环境变量

代码语言:javascript
代码运行次数:0
运行
复制
su userbdc

切换到用户并获得该用户的环境变量及执行权限

代码语言:javascript
代码运行次数:0
运行
复制
su - userbdc

查看登录用户信息

查看创建了哪些组

代码语言:javascript
代码运行次数:0
运行
复制
cat /etc/passwd

显示自身用户名称

代码语言:javascript
代码运行次数:0
运行
复制
whoami

显示登录用户的用户名

代码语言:javascript
代码运行次数:0
运行
复制
who am i

显示有哪些用户登录到了本台机器上

代码语言:javascript
代码运行次数:0
运行
复制
who

sudo

修改配置文件/etc/sudoers

代码语言:javascript
代码运行次数:0
运行
复制
## Allow root to run any commands anywhere
root  ALL=(ALL)   ALL
userbdc  ALL=(ALL)   ALL或 NOPASSWD:ALL(不需要输入密码)

3 文件目录类

3.1 pwd

基本语法

pwd显示您目前所在的工作目录的绝对路径

代码语言:javascript
代码运行次数:0
运行
复制
pwd [-LP]
  • -L 如果指定当前工作目录,则打印PWD的值。ehco PWD 默认就是 -L

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
# pwd
/home/wang

3.2 ls

基本语法

显示指定工作目录下的内容

代码语言:javascript
代码运行次数:0
运行
复制
 ls [-alrtAFR] [目录or文件]

|文件类型以及权限|链接数|文件属主|文件属组|文件大小(单位:Byte)|

最后一次操作的时间|文件名称

  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -A 不列出 "." (目前目录) 及 ".." (父目录)
  • -R 递归显示层级目录
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

实例

代码语言:javascript
代码运行次数:0
运行
复制
Null

3.3 mkdir

基本语法

创建一个新的目录

代码语言:javascript
代码运行次数:0
运行
复制
mkdir [-p] dirName 
  • -p 递归创建多层目录

实例

代码语言:javascript
代码运行次数:0
运行
复制
mkdir -p a/b/c

3.4 rmdir

基本语法

删除一个空的目录

代码语言:javascript
代码运行次数:0
运行
复制
rmdir [-p] dirName
  • -p 递归创建多层目录

实例

代码语言:javascript
代码运行次数:0
运行
复制
rmdir -p a/b/c

3.5 touch

基本语法

创建新的空白文件

代码语言:javascript
代码运行次数:0
运行
复制
touch fileName

实例

代码语言:javascript
代码运行次数:0
运行
复制
touch new.txt

3.6 cd

基本语法

切换目录

代码语言:javascript
代码运行次数:0
运行
复制
cd [dirName]
  • dirName 相对路径或绝对路径都支持

实例

代码语言:javascript
代码运行次数:0
运行
复制
cd ~或者cd  # 回到自己的家目录
代码语言:javascript
代码运行次数:0
运行
复制
cd -  # 回到自己上一次所在目录
代码语言:javascript
代码运行次数:0
运行
复制
cd ..  # 回到当前目录的上一级目录
代码语言:javascript
代码运行次数:0
运行
复制
cd -P  # 跳转到实际物理路径,而非快捷方式路径

3.7 cp

基本用法

复制文件或目录

代码语言:javascript
代码运行次数:0
运行
复制
cp [options] source dest 或 cp [options] source... directory

实例

使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newDir"下

代码语言:javascript
代码运行次数:0
运行
复制
 cp –r test/ newDir

3.8 rm

基本语法

删除文件或目录

代码语言:javascript
代码运行次数:0
运行
复制
rm [options] fileName或dirName...
  • -i 删除前逐一询问确认。
  • -f 强制执行删除操作,而不提示用于进行确认。

常用案例

递归删目录中所有内容

代码语言:javascript
代码运行次数:0
运行
复制
rm -rf dirName

删除当前目录下的所有文件及目录

代码语言:javascript
代码运行次数:0
运行
复制
rm  -r  * 

需要注意

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

3.9 mv

基本语法

移动文件、目录或重命名

代码语言:javascript
代码运行次数:0
运行
复制
mv [options] source dest  #重命名
代码语言:javascript
代码运行次数:0
运行
复制
mv [options] source... directory  #移动

常用案例

将文件oldFileName.txt重命名为newFileName.txt

代码语言:javascript
代码运行次数:0
运行
复制
mv oldFileName.txt  newFileName.txt

将文件fileName移动到目录dir

代码语言:javascript
代码运行次数:0
运行
复制
mv fileName.txt dir

需要注意

如果目录存在,则该命令执行移动操作。

如果目录不存在,则该命令执行修改操作。

3.10 cat

基本语法

查看文件内容,正序

代码语言:javascript
代码运行次数:0
运行
复制
cat [options] fileName
  • -n 或 -number : 对输出的内容进行编号

常用案例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# cat -number a.txt

3.11 tac

基本用法

查看文件内容,倒序

代码语言:javascript
代码运行次数:0
运行
复制
tac [options] fileName

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# tac a.txt

3.12 more

基本用法

代码语言:javascript
代码运行次数:0
运行
复制
more [options] fileName
  • 空白键 (space):代表向下翻一页;
  • q:代表立刻离开 more ,不再显示该文件内容。
  • Ctrl+B 返回上一屏
  • :f 输出文件名和当前行的行号

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# more a.txt

3.13 less

基本用法

less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用[pageup] [pagedown]往回滚动。

代码语言:javascript
代码运行次数:0
运行
复制
less [options] fileName
  • 空白键 :向下翻动一页;
  • [pageup] :向上翻动一页;
  • ?字串 :向上搜寻『字串』的功能;n:向上查找;N:向下查找;

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# less a.txt

3.14 head

基本用法

代码语言:javascript
代码运行次数:0
运行
复制
head [options] fileName
  • -n x 查看文件头x行内容

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# head -n 1 a.txt
total 580

3.15 tail

基本用法

代码语言:javascript
代码运行次数:0
运行
复制
tail [options] fileName
  • -f 实时追踪该文档的所有更新

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# tail -n 1 a.txt
drwxr-xr-x  1 root root    512 Mar  5 00:02 var

3.16 echo

基本用法

显示一行文本,用于字符串的输出。

代码语言:javascript
代码运行次数:0
运行
复制
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION

常用案例

显示普通字符串

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo "hello bdc+"
hello bdc+

显示转义字符

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo "\"It is echo\""
"It is echo"

显示变量

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo $PWD
/

显示换行

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo -e "OK! \n"
OK!

输出结构到文件

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo "It is echo" > myfile
root@DESKTOP-KV8R5US:/# cat myfile
It is echo

显示命令内容

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# echo `date`
Tue Jun 23 10:44:48 CST 2020   

3.17 >>

基本语法

重定向

代码语言:javascript
代码运行次数:0
运行
复制
> 列表的内容写入文件中(覆盖写)
>> 列表的内容追加到文件末尾

常用案例

代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# ls -l > a.txt
代码语言:javascript
代码运行次数:0
运行
复制
root@DESKTOP-KV8R5US:/# ls -l >> a.txt

3.18 ln

基本用法

Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

软链接可以 跨文件系统 ,硬链接不可以

软链接可以对一个不存在的文件名进行链接

软链接可以对目录进行链接

硬链接,以文件副本的形式存在。但不占用实际空间。

不允许给目录创建硬链接

硬链接只有在同一个文件系统中才能创建

代码语言:javascript
代码运行次数:0
运行
复制
ln [options] [source/dir] [dest/dir]
  • -s 软链接(符号链接)
  • -d 允许超级用户制作目录的硬链接
  • -i 交互模式,文件存在则提示用户是否覆盖
  • -v 显示详细的处理过程

常用实例

给hadoop目录创建软链接/ln/hadoop,如果hadoop丢失,/ln/hadoop将失效:

代码语言:javascript
代码运行次数:0
运行
复制
ln -s hadoop /ln/hadoop

cd不加参数进入是软链接的地址

代码语言:javascript
代码运行次数:0
运行
复制
cd hadoop

cd加参数进入是实际的物理地址

代码语言:javascript
代码运行次数:0
运行
复制
cd -P hadoop

3.19 history

基本用法

显示所操作历史记录列表。

代码语言:javascript
代码运行次数:0
运行
复制
history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]

常用案例

代码语言:javascript
代码运行次数:0
运行
复制
history

4. 文件权限类

4.1 文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组。

文件类型

属主权限

属组权限

其他用户权限

0

1 2 3

4 5 6

7 8 9

d

R w x

R - x

R - x

目录文件

读 写 执行

读 写 执行

读 写 执行

  1. 0首位表示类型 在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
    • - 代表文件
    • d 代表目录
    • c 字符流,装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
    • s socket
    • p 管道
    • l 链接文档(link file);
    • b 设备文件,装置文件里面的可供储存的接口设备(可随机存取装置)
  2. 第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
  3. 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
  4. 第7-9位确定其他用户拥有该文件的权限 ---Other rxw作用文件和目录的不同解释
  5. 作用到文件:
    • [ r ]代表可读(read): 可以读取,查看
    • [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
    • [ x ]代表可执行(execute):可以被系统执行
  6. 作用到目录:
    • [ r ]代表可读(read): 可以读取,ls查看目录内容
    • [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
    • [ x ]代表可执行(execute):可以进入该目录

4.2 chmod改变权限

基本用法

文件类型

属主权限 u

属组权限 g

其他用户权限 o

0

1 2 3

4 5 6

7 8 9

d

R w x

R - x

R - x

目录文件

读 写 执行

读 写 执行

读 写 执行

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

代码语言:javascript
代码运行次数:0
运行
复制
chmod [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421 ] [文件或目录] 
chmod [mode=421 ] [文件或目录]

功能描述

改变文件或者目录权限

文件: r-查看;w-修改;x-执行文件

目录: r-列出目录内容;w-在目录中创建和删除;x-进入目录

删除一个文件的前提条件:该文件所在的目录有写权限,你才能删除该文件。

4.3 chown改变所有者

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
chown [最终用户] [文件或目录]     (功能描述:改变文件或者目录的所有者)
  • -R 递归操作

4.4 chgrp改变所属组

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
chgrp [最终用户组] [文件或目录]   (功能描述:改变文件或者目录的所属组)

5. 时间日期类

5.1 date显示当前时间

data 显示当前时间

代码语言:javascript
代码运行次数:0
运行
复制
Tue Jun 16 20:03:43 CST 2020

date +%Y 显示当前年份 (Y是4位的年/y是2位的年)

代码语言:javascript
代码运行次数:0
运行
复制
2020

date +%m 显示当前月份

代码语言:javascript
代码运行次数:0
运行
复制
06

date +%Y%m%d date +%Y-%m-%d date +%Y/%m/%d 显示当前年月日各种格式

代码语言:javascript
代码运行次数:0
运行
复制
20200616	2020-06-16    2020/06/16

date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒

代码语言:javascript
代码运行次数:0
运行
复制
2020-06-16 20:10:08

5.2 date 显示非当前时间

date -d yesterday +%Y%m%d 或 date -d '1 days ago' 显示昨天当下时间

代码语言:javascript
代码运行次数:0
运行
复制
20200615 或 Tue Jun 15 20:12:55 CST 2020

date -d next-day +%Y%m%d 或 date -d 'next monday' 显示明天当下时间

代码语言:javascript
代码运行次数:0
运行
复制
20200617 或 Tue Jun 17 20:15:15 CST 2020

5.3 date 设置系统时间

date -s 字符串时间

代码语言:javascript
代码运行次数:0
运行
复制
date -s "xxxx-xx-xx xx:xx:xx"

在设置完时间之后我们可以将其写入到BIOS,避免重启失效

代码语言:javascript
代码运行次数:0
运行
复制
hwclock -w	强制把系统时间写入CMOS

在计算机领域,CMOS常指保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。有时人们会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定。

5.4 cal 查看日历

cal 显示本月日历

代码语言:javascript
代码运行次数:0
运行
复制
 June 2020
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

cal 2000 显示某年(2000)日历

代码语言:javascript
代码运行次数:0
运行
复制
2000
      January               February               March
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1         1  2  3  4  5            1  2  3  4
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   5  6  7  8  9 10 11
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  12 13 14 15 16 17 18
16 17 18 19 20 21 22  20 21 22 23 24 25 26  19 20 21 22 23 24 25
23 24 25 26 27 28 29  27 28 29              26 27 28 29 30 31
30 31

       April                  May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30
30

        July                 August              September
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1         1  2  3  4  5                  1  2
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   3  4  5  6  7  8  9
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  10 11 12 13 14 15 16
16 17 18 19 20 21 22  20 21 22 23 24 25 26  17 18 19 20 21 22 23
23 24 25 26 27 28 29  27 28 29 30 31        24 25 26 27 28 29 30
30 31

      October               November              December
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7            1  2  3  4                  1  2
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9
15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16
22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23
29 30 31              26 27 28 29 30        24 25 26 27 28 29 30
                                            31

cal -3 显示系统前一个月,当前月,下一个月的日历

代码语言:javascript
代码运行次数:0
运行
复制
 May 2020             June 2020             July 2020
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                1  2      1  2  3  4  5  6            1  2  3  4
 3  4  5  6  7  8  9   7  8  9 10 11 12 13   5  6  7  8  9 10 11
10 11 12 13 14 15 16  14 15 16 17 18 19 20  12 13 14 15 16 17 18
17 18 19 20 21 22 23  21 22 23 24 25 26 27  19 20 21 22 23 24 25
24 25 26 27 28 29 30  28 29 30              26 27 28 29 30 31
31  

6. 搜索查找类

6.1 find

基本语法

find 查找文件或者目录

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

代码语言:javascript
代码运行次数:0
运行
复制
find [搜索范围] [匹配条件]

选项

功能

-name<查询方式>

按照指定的文件名查找模式查找文件

-user<用户名>

查找属于指定用户名所有文件

常用实例

按文件名:根据名称查找/opt目录下的filename.txt文件。

代码语言:javascript
代码运行次数:0
运行
复制
find /opt/ -name filename.txt

按拥有者:查找/opt目录下,用户名称为userbdc的文件。

代码语言:javascript
代码运行次数:0
运行
复制
find /opt/ -user userbdc

按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)。

代码语言:javascript
代码运行次数:0
运行
复制
find /home –size +204800

6.2 grep

基本语法

grep 在文件内搜索字符串匹配的行并输出

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

代码语言:javascript
代码运行次数:0
运行
复制
grep+参数+查找内容+源文件
  • -c:只输出匹配行的计数。
  • -h:查询多文件时不显示文件名。
  • -n:显示匹配行及行号。
  • -v:显示不包含匹配文本的所有行。

6.3 which

基本用法

文件搜索命令

搜索命令所在目录及别名信息

代码语言:javascript
代码运行次数:0
运行
复制
which + 命令

7. 进程线程类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

7.1 ps

基本语法

ps 即 process status 进程状态缩写

查看系统中所有进程

代码语言:javascript
代码运行次数:0
运行
复制
ps –aux|grep xxx

查看父子进程之间的关系

代码语言:javascript
代码运行次数:0
运行
复制
ps -ef|grep xxx
  • -a 选择所有进程
  • -x 显示没有终端的进程

特点

如果想查看进程的CPU****占用率和内存占用率,可以使用aux;

如果想查看进程的父进程****ID可以使用ef;

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
ps –aux

USER:该进程是由哪个用户产生的

PID:进程的ID号

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;

RSS:该进程占用实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

代码语言:javascript
代码运行次数:0
运行
复制
ps -ef

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

7.2 top

基本语法

查看系统基本状态

代码语言:javascript
代码运行次数:0
运行
复制
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
  • -d 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
  • -p:通过指定监控进程ID来仅仅监控某个进程的状态。

操作选项

P: 以CPU使用率排序,默认就是此项

M: 以内存的使用率排序

N: 以PID排序

q: 退出top

查询结果字段解释

第一行信息为任务队列信息

内容

说明

12:26:46

系统当前时间

up 1 day, 13:32

系统的运行时间,本机已经运行1天 13小时32分钟

2 users

当前登录了两个用户

load average: 0.00, 0.00, 0.00

系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。

第二行为进程信息

Tasks: 95 total

系统中的进程总数

1 running

正在运行的进程数

94 sleeping

睡眠的进程

0 stopped

正在停止的进程

0 zombie

僵尸进程。如果不是0,需要手工检 查僵尸进程

第三行为CPU信息

Cpu(s): 0.1%us

用户模式占用的CPU百分比

0.1%sy

系统模式占用的CPU百分比

0.0%ni

改变过优先级的用户进程占用的CPU百分比

99.7%id

空闲CPU的CPU百分比

0.1%wa

等待输入/输出的进程的占用CPU百分比

0.0%hi

硬中断请求服务占用的CPU百分比

0.1%si

软中断请求服务占用的CPU百分比

0.0%st

st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。

第四行为物理内存信息

Mem: 625344k total

物理内存的总量,单位KB

571504k used

已经使用的物理内存数量

53840k free

空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了

65800k buffers

作为缓冲的内存数量

第五行为交换分区(swap)信息

Swap: 524280k total

交换分区(虚拟内存)的总大小

0k used

已经使用的交互分区的大小

524280k free

空闲交换分区的大小

409280k cached

作为缓存的交互分区的大小

7.3 pstree

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
  • -p 显示进程的PID

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
pstree -u
代码语言:javascript
代码运行次数:0
运行
复制
pstree -p

7.4 kill

基本用法

终止进程

强迫进程立即停止执行

代码语言:javascript
代码运行次数:0
运行
复制
kill -9 pid进程号

常用案例

根据进程号

代码语言:javascript
代码运行次数:0
运行
复制
kill -9  xxxxx

根据进程名称

代码语言:javascript
代码运行次数:0
运行
复制
killall firefox

7.5 netstat

基本语法

查看该进程网络信息&查看端口号占用情况

代码语言:javascript
代码运行次数:0
运行
复制
netstat –anp|grep 端口号  
(功能描述:此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容)
代码语言:javascript
代码运行次数:0
运行
复制
netstat -nlp  | grep 端口号    
(功能描述:查看网络端口号占用情况)
  • -an 按一定顺序排列输出
  • nltp 查看tcp协议进程端口号

常用实例

代码语言:javascript
代码运行次数:0
运行
复制
netstat -anp | grep 50070

8. 打包压缩类

8.1 gzip/gunzip

基本语法

压缩文件,只能将文件压缩为*.gz文件

代码语言:javascript
代码运行次数:0
运行
复制
gzip file

解压缩文件命令

代码语言:javascript
代码运行次数:0
运行
复制
gunzip  file.zip

特点

只能压缩文件不能压缩目录

不保留原来的文件

8.2 zip/unzip

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
zip + 参数 + XXX.zip + 将要压缩的文件或目录
  • -r 压缩目录

特点

文件和目录皆可压缩

window/linux通用且可以压缩目录且保留源文件

8.3 tar

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
tar + 参数 + XXX.tar.gz + 将要打包进去的内容
  • -c 产生.tar打包文件
  • -f 指定压缩后的文件名
  • -x 解包.tar文件

常用实例

解压

代码语言:javascript
代码运行次数:0
运行
复制
tar -zxvf test.tar.gz –C /dir

压缩

代码语言:javascript
代码运行次数:0
运行
复制
 tar -zcvf test

9. 软件包类

9.1 rpm

概述

RPM(RedHat Package Manager),Rethat软件包管理工具,类似windows里面的setup.exe是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

RPM包的名称格式

Apache-1.3.23-11.i386.rpm

- “apache” 软件名称

- “1.3.23-11”软件的版本号,主版本和此版本

- “i386”是软件所运行的硬件平台

- “rpm”文件扩展名,代表RPM包

查询命令

查询所安装的所有rpm软件包

代码语言:javascript
代码运行次数:0
运行
复制
rpm –qa

由于软件包比较多,一般都会采取过滤

代码语言:javascript
代码运行次数:0
运行
复制
rpm –qa | grep rpm软件包

安装命令

代码语言:javascript
代码运行次数:0
运行
复制
rpm –ivh RPM包全名
  • -i=install,安装
  • -h=hash,进度条

卸载命令

一般常规卸载

代码语言:javascript
代码运行次数:0
运行
复制
rpm -e RPM软件包

如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。

代码语言:javascript
代码运行次数:0
运行
复制
 rpm -e --nodeps rpm软件包 

9.2 yum

概述

在Linux上使用源码的方式安装软件非常麻烦,使用yum可以简化安装的过程

基本语法

代码语言:javascript
代码运行次数:0
运行
复制
yum [options] [command] [package ...]

选项

功能

-y

对所有提问都回答“yes”

参数

功能

install

安装rpm软件包

update

更新rpm软件包

check-update

检查是否有可用的更新rpm软件包

remove

删除指定的rpm软件包

list

显示软件包信息

clean

清理yum过期的缓存

deplist

显示yum软件包的所有依赖关系

常用实例

安装指定软件并确认安装

代码语言:javascript
代码运行次数:0
运行
复制
yum install -y <package_name>

删除指定软件并确认删除

代码语言:javascript
代码运行次数:0
运行
复制
yum remove  -y <package_name>

列出所有可安裝的软件清单命令

代码语言:javascript
代码运行次数:0
运行
复制
yum list

列出一个包所有依赖的包

代码语言:javascript
代码运行次数:0
运行
复制
yum deplist httpd

列出所有可更新的软件清单命令

代码语言:javascript
代码运行次数:0
运行
复制
yum check-update

更新所有软件命令

代码语言:javascript
代码运行次数:0
运行
复制
yum update

仅更新指定的软件命令

代码语言:javascript
代码运行次数:0
运行
复制
yum update <package_name>

查找软件包 命令

代码语言:javascript
代码运行次数:0
运行
复制
yum search <keyword>

清除缓存目录下的软件包及旧的headers

代码语言:javascript
代码运行次数:0
运行
复制
yum clean

写在最后

选择不对努力白费,选择若对事半功倍。

正确使用一些快捷键可以让你更高效的完成任务。

ctrl + c:停止进程

ctrl+l:清屏

ctrl + q:退出

ctrl +alt:linux和Windows之间切换

上下键:查找执行过的命令

tab键:自动补全

-本文完-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 开篇词
  • 1. 帮助命令
    • 1.1 help
    • 1.2 man
    • 1.3 info
  • 2. 组与用户类
    • 2.1 group
    • 2.2 user
  • 3 文件目录类
    • 3.1 pwd
    • 3.2 ls
    • 3.3 mkdir
    • 3.4 rmdir
    • 3.5 touch
    • 3.6 cd
    • 3.7 cp
    • 3.8 rm
    • 3.9 mv
    • 3.10 cat
    • 3.11 tac
    • 3.12 more
    • 3.13 less
    • 3.14 head
    • 3.15 tail
    • 3.16 echo
    • 3.17 >>
    • 3.18 ln
    • 3.19 history
  • 4. 文件权限类
    • 4.1 文件属性
    • 4.2 chmod改变权限
    • 4.3 chown改变所有者
    • 4.4 chgrp改变所属组
  • 5. 时间日期类
    • 5.1 date显示当前时间
    • 5.2 date 显示非当前时间
    • 5.3 date 设置系统时间
    • 5.4 cal 查看日历
  • 6. 搜索查找类
    • 6.1 find
    • 6.2 grep
    • 6.3 which
  • 7. 进程线程类
    • 7.1 ps
    • 7.2 top
    • 7.3 pstree
    • 7.4 kill
    • 7.5 netstat
  • 8. 打包压缩类
    • 8.1 gzip/gunzip
    • 8.2 zip/unzip
    • 8.3 tar
  • 9. 软件包类
    • 9.1 rpm
    • 9.2 yum
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档