linux下常用命令详解(以Ubuntu18.04系统为例)

linux下常用命令详解(以Ubuntu18.04系统为例)

1. apt-get(Advanced Package Tool)软件包管理命令

1.1 apt-get介绍

apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

1.2 apt-get命令细节

具体命令细节我放在下面,但是这些命令其实不需要记得很清楚,只需要记住软件安装和卸载两个命令。即:

apt-get install PackageName                 #安装某个软件包
apt-get remove PackageName                  #卸载某个软件包

一般来说我们不常使用更新命令,因为更新命令很容易引起一些之前安装的依赖不支持新版本的软件包,从而导致无法使用之前安装的包。
apt-get一些细节如下:
软件包安装相关命令:

apt-get install PackageName                 # 普通安装
apt-get install PackageName=VersionName     # 安装指定包的指定版本
apt-get --reinstall install PackageName     # 重新安装
apt-get build-dep PackageName               # 安装源码包所需要的编译环境
apt-get -f install                          # 修复依赖关系
apt-get source PackageName                  # 下载软件包的源码

软件包卸载相关命令:

apt-get remove PackageName                  # 删除软件包, 保留配置文件
apt-get --purge remove PackageName          # 删除软件包, 同时删除配置文件
apt-get purge PackageName                   # 删除软件包, 同时删除配置文件
apt-get autoremove PackageName              # 删除软件包, 同时删除为满足依赖
                                            # 而自动安装且不再使用的软件包
apt-get --purge autoremove PackageName      # 删除软件包, 删除配置文件, 
                                            # 删除不再使用的依赖包
apt-get clean && apt-get autoclean          # 清除 已下载的软件包 和 旧软件包

软件包更新相关命令:

apt-get update                              # 更新安装源(Source)
apt-get upgrade                             # 更新已安装的软件包
apt-get dist-upgrade                        # 更新已安装的软件包(识别并处理依赖关系的改变)

软件包查询相关命令:

dpkg -l                                     # 列出已安装的所有软件包
apt-cache search PackageName                # 搜索软件包
apt-cache show PackageName                  # 获取软件包的相关信息, 如说明、大小、版本等
apt-cache depends PackageName               # 查看该软件包需要哪些依赖包
apt-cache rdepends PackageName              # 查看该软件包被哪些包依赖
apt-get check                               # 检查是否有损坏的依赖

2. SSH(Secure Shell)登录命令

2.1 SSH介绍

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
SSH一般在系统里面不是默认安装的,需要使用apt-get命令安装,安装命令如下:

sudo apt-get install openssh-server

此外,在客户端也需要安装SSH才可以实现客户端SSH远程登录到服务端(Ubuntu、mac等大部分系统均默认安装了客户端,没有安装服务端),客户端安装命令如下:

sudo apt-get install openssh-client 

SSH服务的启动相关命令如下:

sudo /etc/init.d/ssh start                  #server开启ssh服务
sudo /etc/init.d/ssh stop                   #server停止ssh服务 
sudo /etc/init.d/ssh restart                #server重启ssh服务

2.2 SSH命令的用法

SSH的常见用法是:

ssh 用户名@IP

例如,我的linux系统用户名为user,IP地址为1.1.1.1,使用可以访问1.1.1.1的网络可以远程登录系统,命令为:

ssh [email protected]

SSH服务的默认端口是22,如果不指定端口的话登录请求会自动送到远程主机的22端口。
如果使用了端口映射或者改了端口号,可以使用 -p 参数来修改端口号。
例如,我将远程登录的端口号修改为1234,则远程登录命令变成:

ssh -p 1234 [email protected]

3. 文件系统相关命令

3.1 文件系统介绍

首先介绍一下linux系统(以Ubuntu系统为例)的文件系统
Linux下“/”就是根目录,所有的目录都是有根目录衍生出来的。/是一切目录的起点,如大树的主干。其它的所有目录都是基于树干的枝条或者枝叶。在ubuntu中硬件设备如光驱、软驱、usb设备都将挂载到这颗繁茂的枝干之下,作为文件来管理。(Ubuntu文件系统严格区分大小写)
linux下常用命令详解(以Ubuntu18.04系统为例)_第1张图片

/bin: bin是Binary的缩写。存放系统中最常用的可执行文件(二进制)。
/boot: 这里存放的是linux内核和系统启动文件,包括Grub、lilo启动器程序。
/dev: dev是Device(设备)的缩写。该目录存放的是Linux的外部设备,如硬盘、分区、键盘、鼠标、usb等。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录,如passwd、hostname等。
/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib: 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件。
/lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件。
/media: ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。
/mnt: 作为被挂载的文件系统得挂载点。
/opt: 作为可选文件和程序的存放目录,主要被第三方开发者用来简易安装和卸载他们的软件。
/proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这里存放所有标志为文件的进程,比较cpuinfo存放cpu当前工作状态的数据。
/root: 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin: s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。
/srv: 存放系统所提供的服务数据。
/sys: 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
/tmp: 这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。
/usr: 存放与系统用户有关的文件和目录。

linux下常用命令详解(以Ubuntu18.04系统为例)_第2张图片

/usr 目录具体来说:
/usr/X11R6: 存放X-Windows的目录;
/usr/games: 存放着XteamLinux自带的小游戏;
/usr/bin: 用户和管理员的标准命令;
/usr/sbin: 存放root超级用户使用的管理程序;
/usr/doc: Linux技术文档;
/usr/include: 用来存放Linux下开发和编译应用程序所需要的头文件,for c 或者c++;
/usr/lib: 应用程序和程序包的连接库;
/usr/local: 系统管理员安装的应用程序目录;
/usr/man: 帮助文档所在的目录;
/usr/src: Linux开放的源代码;
/var: 长度可变的文件,尤其是些记录数据,如日志文件和打印机文件。
/var/cache: 应用程序缓存目录;
/var/crash: 系统错误信息;
/var/games: 游戏数据;
/var/log: 日志文件;
/var/mail: 电子邮件;
/var/tmp: 临时文件目录;

3.2 一些文件系统的代称

在linux中为了命令的简洁,对于一些特殊的文件系统有一个代称,例如

.或者./                                      #代表当前路径
~                                           #代表家目录,普通用户为/home/用户名/,root用户为/root
..                                          #代表当前路径的上一级目录
/                                           #代表根目录
./.文件(夹)名                               #文件(夹)名之前加.为隐藏文件或者文件夹,如/root/.cache为root文件夹下的隐藏文件夹。
#                                           #代表root用户
$                                           #代表当前用户

3.3 绝对路径和相对路径

(1)绝对路径

文件的绝对路径,由目录的最顶层作为开始的。即从目录的最开始位置开始,直到目标所在的位置结束。简单而言就是从根目录开始算第一层。绝对路径是由根目录“/”写起的,比如 /root/

(2)相对路径

相对路径是相对于当前目录的位置而言的。可以理解为在一个目录路径中切换时,不用从文件的最开始位置开始,而是直接从某个路径下的文件路径开始切换。

3.4 常见的文件系统有关的命令

(1)ls (list directory contents) 命令

查看文件夹里面的文件信息的命令

ls [选项] [目录或文件]

选项:

-a 显示指定目录下所有子目录与文件,包括隐藏文件。
-A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“ .”和 “ ..”。
-i 显示文件和目录的inode编号。
-l 以长格式来显示文件的详细信息,这个选项最常用。
-p 在目录后面加一个“ /”。
-R 递归式地显示指定目录的各个子目录中的文件。
其中:ls的使用是可以叠加的,比如下面的示例。
ls -hl :以详细信息列出文件,并且文件的大小根据实际情况使用k、m、G进行显示;
ls -al:以详细信息列出所有文件(叠加-a和-l)

例如,想查看当前文件夹下所有的文件(包括隐藏文件),并以详细信息列出,文件大小根据实际情况使用k、m、G进行显示,则可以使用:

ls -lha

(2)cd (change the working directory) 命令

将当前工作目录切换至指定的目标目录。

cd [目标目录]

特殊的使用方法如下:

cd                                          #切换至用户主目录
cd ~                                        #切换至用户主目录
cd -                                        #切换至此目录之前所在的目录
cd ..                                       #切换至上级目录(在根目录使用“cd ..”还是进入根目录)
cd ../..                                    #切换至上两级目录
cd .                                        #切换至当前目录

(3)mkdir (make directories) 创建目录(文件夹)

创建一个目录:

mkdir [选项] 目录名称

选项:

-m:对新建目录设置存取权限,也可以用chmod命令设置。如下:
mkdir -m=rw- test2 。即这个可以用来建立一个有权限的路径。
-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。如下:
mkdir -p lesson/test1 。这个可以用来建立多级层次的路径。

(4)chmod (change mode) 文件修改命令

linux 系统对文件有一个严格的文件权限管理。
linux系统文件权限有三种,分别是:

r:读
w:写
x:可执行。

例如

-rw-rw-r-- test.txt

-rw-rw-r–就是文件权限,第一位表示文件类型(-为文件,d为文件夹),剩下的每三位表示一组权限。分别对应拥有者权限、拥有者所在组权限、其他用户权限。
可以使用二进制表示文件权限。

r=4
w=2
x=1

最大为rwx=7
上述test.txt文件的权限为664

修改文件或目录的权限,该命令有两种语法,分别是文字设定法和数字设定法。如下:

文字设定法

chmod [操作对象][操作符] [权限模式] 文件/目录名

选项:

①操作对象
   u 表示“用户(user)”,即文件或目录的所有者。
   g 表示“同组(group)用户”,即与文件所有者有相同组ID的所有用户。
   o 表示“其他(others)用户”。
   a 表示“所有(all)用户”。它是系统默认值。
②操作符
   + 添加某个权限。
   - 取消某个权限。
   = 赋予给定权限并取消其他所有权限(如果有的话)。
③权限模式
   r 可读。
   w 可写。
   x 可执行。

说明:权限模式可以是3中权限的组合,当时组合时需要指明操作对象。
例如,将test文件添加可写权限,则命令为:

chmod +w test

数字设定法

chmod [权限模式] 文件/目录名
①权限模式:将每一组权限的rwx看成二进制,二进制为1表示有此权限,二进制为0表示没有此权限,那就有3组2进制。

例如,将文件test文件修改为r-xrw–wx,二进制为101 110 011,十进制为563,则命令为

chmod 563 test

(5)touch (change file timestamps) 新建文件

更新或新建文件:

touch [选项] 文件或目录

说明:如果文件或目录存在就更新其建立时间,如果文件或目录不存在就创建普通文件。

新建普通文件test.txt。如:

touch test.txt

(6) rm (remove files or directories) 删除指令

删除文件或目录:

rm [选项] 文件或目录

说明:该命令的功能为删除一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。执行rm指令可删除文件或目录,如欲删除目录必须加上参数“-r”,否则预设仅会删除文件。

选项:

   -f 忽略不存在的文件,从不给出提示。
   -r 指示rm将参数中列出的全部目录和子目录均递归地删除。
   -i 进行交互式删除。

使用示例如下:

1)删除普通文件,rm。如:rm test
2)删除文件夹。  rm work/ -r ;rmdir work/

(7) cp(copy files and directories) 复制粘贴指令

将给定的文件或目录复制到另一个文件或目录:

cp [选项] 源文件或目录 目标文件或目录

说明:cp命令用在复制文件或目录时,如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。

选项:

   -f 强行复制文件或目录,不论目标文件或目录是否已存在。
   -i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
   -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
   -a 该选项通常在拷贝目录时使用,它保留链接、文件属性,并递归地拷贝目录。
   -d 拷贝时保留链接。

(8)mv (move (rename) files) 文件/目录改名或移动

对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。

mv [选项] 源文件或目录 目标文件或目录

说明:视mv命令的第二个参数的不同(目标文件或目录)完成命令的改名和移动功能。当第二个参数类型是文件时,mv命令完成文件或目录的重命名功能,此时源文件或目录只能有一个,它将所给的源文件或目录重命名为给定的目标文件或目录名。当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各个参数指定的源文件或目录均移至目标目录中(最后一项目录)。在跨文件系统移动文件时,mv先复制,将原有文件删除,而与该文件的链接也将丢失。
选项:

-i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
-f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

4. 系统运行状态和进程相关命令

4.1 ps(report a snapshot of the current processes)

Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中 当前正在运行的那些进程,就是执行 ps 命令的那个时刻的那些进程的快照。使用该命令可以确定有哪些进程 正在运行 和 运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 查看的结果不是动态连续的,如果想要动态的显示进程信息,就可以使用 top、htop 命令。
一般常用以下命令查看系统进程

ps -ef 

4.2 top(display Linux tasks)

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

一般直接使用top命令即可查看一些进程

4.3 free(display amount of free and used memory in the system)

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

选项:

-b	以Byte为单位显示内存使用情况
-k	以KB为单位显示内存使用情况
-m	以MB为单位显示内存使用情况
-g	以GB为单位显示内存使用情况
-h	以有好的方式显示内存的使用情况
-o	不显示缓冲区调节列
-s <间隔秒数>	持续观察内存使用状况
-t	显示内存总和列
-V	显示版本信息

一般使用以下命令查看内存使用

free -lh

4.4 df (report file system disk space usage)

df命令经常用来查看设备存储状况,也可以查看存储设备的变化(U盘插拔情况),因此,这个命令非常常用。

df的参数选项主要有

-a:全部文件系统列表,包含虚拟文件系统
-B:指定显示scale size,比如以M,G为单位显示
-h:方便人阅读方式显示。
-H:和-h相似,不过其中1k = 1000byte, 1M=1000k
-i:列出inode的信息
-k :区块为1024字节
-l :显示本地文件系统
-p:使用POSIX规范输出
-t:打印指定的文件系统类型
-T:显示文件系统类型
-x:不打印指定的文件系统类型

一般使用以下命令查看磁盘使用

df -lh

4.5 htop(interactive process viewer)

Htop是一个免费的(GPL)基于NCourses的Linux进程查看器。它类似于top,但允许您垂直和水平滚动,因此您可以看到系统上运行的所有进程,以及它们的完整命令行,还可以将它们视为进程树,选择多个进程并同时对它们执行操作。与流程相关的任务(终止、重新冻结)可以在不输入PID的情况下完成。
一般直接使用htop命令查看进行使用
该命令需要使用apt-get安装,安装命令如下:

apt-get install htop

5. 其他命令

5.1 nohup (no hang up)

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]
  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
退出状态:该命令返回下列出口值:   
  126 可以查找但不能调用 Command 参数指定的命令。   
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
一般使用以下命令后台运行程序并将输出保存到日志文件./command.log中

nohup command > ./command.log & 

5.2 压缩和解压缩命令

(1)tar命令

在Linux平台,tar是主要的打包工具。tar命令通常用来把文件和目录压缩为一个文件( tarball 或 tar, gzip 和 bzip)。

c – 创建压缩文件
x – 解压文件
v – 显示进度.
f – 文件名.
t – 查看压缩文件内容.
j – 通过bzip2归档
z –通过gzip归档
r – 在压缩文件中追加文件或目录
W – 验证压缩文件

tar.gz压缩命令:

tar -zcvf 压缩文件名.tar.gz 被压缩文件名

tar.gz解压缩命令:

tar -zxvf 压缩文件名.tar.gz

(2)unzip命令

unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。
该命令需要使用apt-get安装,安装命令如下:

apt-get install unzip

使用如下:

unzip [选项] [参数]

选项:

-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f 更新现有的文件;
-l 显示压缩文件内所包含的文件;
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t 检查压缩文件是否正确;
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v 执行时显示详细的信息;
-z 仅显示压缩文件的备注文字;
-a 对文本文件进行必要的字符转换;
-b 不要对文本文件进行字符转换;
-C 压缩文件中的文件名称区分大小写;
-j 不处理压缩文件中原有的目录路径;
-L 将压缩文件中的全部文件名改为小写;
-M 将输出结果送到more程序处理;
-n 解压缩时不要覆盖原有的文件;
-o 不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码> 使用zip的密码选项;
-q 执行时不显示任何信息;
-s 将文件名中的空白字符转换为底线字符;
-V 保留VMS的文件版本信息;
-X 解压缩时同时回存文件原来的UID/GID;
-d<目录> 指定文件解压缩后所要存储的目录;
-x<文件> 指定不要处理.zip压缩文件中的哪些文件;
-Z unzip-Z等于执行zipinfo指令。

例如:

unzip test.zip                               #将test.zip解压到当前文件下
unzip -n test.zip -d /tmp                    #将test.zip解压到/tmp目录下,并且不要覆盖已有文件
unzip -v test.zip                            #查看test.zip内容,但不解压
unzip -o test.zip -d tmp/                    #将test.zip解压到/tmp目录下,并且覆盖已有文件

…(持续更新中)

大家有啥补充的在评论区留言

参考文献

[1] apt-get百科 https://baike.baidu.com/item/apt-get
[2] Linux: 软件包管理工具 apt-get 命令(Debian/Ubuntu)https://blog.csdn.net/xietansheng/article/details/80044644
[3] SSH百科 https://baike.baidu.com/item/ssh/10407
[4] SSH简介及两种远程登录的方法 https://blog.csdn.net/li528405176/article/details/82810342
[5] ubuntu文件系统结构讲解https://blog.csdn.net/poplong/article/details/8259386
[6] ubuntu文件系统结构讲解https://www.bilibili.com/read/cv19786074/
[7] https://explainshell.com/
[8] ps 命令详解 https://blog.csdn.net/lyshark_lyshark/article/details/125846801
[9] top命令https://blog.csdn.net/m0_51627713/article/details/118091336
[10] free命令详解 https://blog.csdn.net/weixin_51099370/article/details/125084071
[11] df命令详解 https://blog.csdn.net/qqliuzhitong/article/details/120642801
[12] Linux工具之htop命令https://blog.csdn.net/carefree2005/article/details/124495718
[13] Ubuntu下tar命令使用详解https://blog.csdn.net/qq_42680785/article/details/115302528
[14] unzip解压命令如何使用 https://m.php.cn/article/461677.html

你可能感兴趣的:(linux,ubuntu,服务器)