Linux常用命令
1. 文件和目录操作命令:
cd
:切换当前工作目录。用法:cd [目录名]
。例如,cd /home
表示切换到/home目录下。如果不指定目录名,则表示切换到当前用户的主目录。如果目录名是..
,则表示切换到上一级目录。ls
:列出目录内容。用法:ls [选项] [文件或目录]
。例如,ls -l /etc
表示以长格式列出/etc目录下的所有文件和子目录。如果不指定文件或目录,则表示列出当前工作目录下的内容。常用的选项有:-a
:显示所有文件和目录,包括隐藏文件(以.
开头的文件)。-l
:显示文件和目录的详细信息,如大小、权限、所有者、修改时间等。-h
:以人类可读的格式显示文件大小,如KB、MB、GB等。-r
:以反向顺序显示结果,即按字母表的逆序排列。-S
:按文件大小排序,从大到小。-t
:按修改时间排序,从近到远。
mkdir
:创建目录。用法:mkdir [选项] [目录名]
。例如,mkdir test
表示在当前工作目录下创建一个名为test的子目录。常用的选项有:-p
:创建多级目录,即如果父目录不存在,则一并创建。-m
:指定创建目录的权限,如-m 755
表示创建一个权限为755(即rwxr-xr-x)的目录。
rm
:删除文件或目录。用法:rm [选项] [文件或目录]
。例如,rm test.txt
表示删除当前工作目录下的test.txt文件。常用的选项有:-i
:在删除前询问用户是否确认删除。-f
:强制删除,不询问用户,也不报错。-r
:递归删除,即如果是目录,则删除该目录及其所有子目录和文件。
cp
:复制文件或目录。用法:cp [选项] [源文件或目录] [目标文件或目录]
。例如,cp test.txt /tmp/test.txt.bak
表示将当前工作目录下的test.txt文件复制到/tmp目录下,并命名为test.txt.bak。常用的选项有:-i
:在覆盖前询问用户是否确认复制。-f
:强制复制,不询问用户,也不报错。-r
:递归复制,即如果是目录,则复制该目录及其所有子目录和文件。-p
:保留源文件或目录的属性,如权限、所有者、修改时间等。
mv
:移动文件或目录的位置,给文件/文件夹改名。用法:mv [选项] [源文件或目录] [目标文件或目录]
。例如,mv test.txt /tmp/test.txt.bak
表示将当前工作目录下的test.txt文件移动到/tmp目录下,并命名为test.txt.bak。常用的选项有:-i
: 在覆盖前询问用户是否确认移动。-f
: 强制移动,不询问用户,也不报错。
下面是一个使用这些命令的示例:
# 创建一个名为demo的多级子目录
mkdir -p demo/test1/test2
# 在demo目录下创建一个名为test.txt的文件,并写入一些内容
echo "Hello, world!" > demo/test.txt
# 切换到demo目录下
cd demo
# 列出demo目录下的所有文件和子目录的详细信息
ls -al
# 复制test.txt文件到test1目录下,并命名为test1.txt
cp test.txt test1/test1.txt
# 移动test1目录到test2目录下,并改名为test3
mv test1 test2/test3
# 删除test.txt文件
rm test.txt
# 删除test2目录及其所有子目录和文件
rm -r test2
2. 文本处理命令:
cat
:显示文件内容。用法:cat [选项] [文件]
。例如,cat test.txt
表示显示test.txt文件的内容。如果不指定文件,则表示从标准输入读取文本内容,输出到标准输出中。常用的选项有:-n
:显示行号。-b
:显示非空行的行号。-s
:压缩连续的空行为一行。-A
:显示所有不可打印的字符,如制表符、换行符等。
less
:逐页显示文件内容。用法:less [选项] [文件]
。例如,less test.txt
表示逐页显示test.txt文件的内容。如果不指定文件,则表示从标准输入读取文本内容,输出到标准输出中。常用的选项有:-N
:显示行号。-S
:不换行,即如果一行太长,则只显示屏幕能容纳的部分,超出部分不显示。-i
:忽略大小写,即在搜索时不区分大小写。-p
:指定一个模式,打开文件后立即搜索该模式。
在less命令的交互模式下,可以使用以下按键进行操作:- 空格键或Page Down键:向下翻页。
- Page Up键或b键:向上翻页。
- 上下箭头键或j和k键:向上或向下滚动一行。
- Home键或g键:跳转到文件的开头。
- End键或G键:跳转到文件的结尾。
- /键:输入一个正向搜索的模式,按回车键开始搜索,按n键查找下一个匹配,按N键查找上一个匹配。
- ?键:输入一个反向搜索的模式,按回车键开始搜索,按n键查找上一个匹配,按N键查找下一个匹配。
- q键:退出less命令。
head
:显示文件头部内容。用法:head [选项] [文件]
。例如,head test.txt
表示显示test.txt文件的前10行内容。如果不指定文件,则表示从标准输入读取文本内容,输出到标准输出中。常用的选项有:-n
:指定显示的行数,如-n 5
表示显示前5行内容。-c
:指定显示的字节数,如-c 10
表示显示前10个字节的内容。
tail
:显示文件尾部内容。用法:tail [选项] [文件]
。例如,tail test.txt
表示显示test.txt文件的后10行内容。如果不指定文件,则表示从标准输入读取文本内容,输出到标准输出中。常用的选项有:-n
: 指定显示的行数,如-n 5
表示显示后5行内容。-c
: 指定显示的字节数,如-c 10
表示显示后10个字节的内容。-f
: 持续监视文件的变化,并实时显示最新的内容。
grep
:在文件中搜索指定的模式。用法:grep [选项] [模式] [文件]
。例如,grep hello test.txt
表示在test.txt文件中搜索包含hello的行,并显示匹配的结果。如果不指定文件,则表示从标准输入读取文本内容,输出到标准输出中。常用的选项有:-i
:忽略大小写,即在搜索时不区分大小写。-v
:反向匹配,即显示不包含模式的行。-n
:显示行号,即在每行的开头显示该行在文件中的行号。-c
:显示匹配的行数,即统计有多少行包含模式。-l
:显示匹配的文件名,即只显示包含模式的文件的文件名,而不显示具体的匹配内容。-r
:递归搜索,即如果是目录,则搜索该目录及其所有子目录和文件。
3. 网络管理命令:
ping
:测试与目标主机的网络连通性。用法:ping [选项] [主机名或IP地址]
。例如,ping www.baidu.com
表示向百度的服务器发送数据包,并显示回应的时间和丢包率。常用的选项有:-c
:指定发送数据包的次数,如-c 5
表示发送5次数据包后停止。-i
:指定发送数据包的间隔,单位为秒,如-i 2
表示每隔2秒发送一次数据包。-s
:指定发送数据包的大小,单位为字节,如-s 64
表示发送64字节的数据包。-t
:指定数据包的生存时间(TTL),即数据包经过多少个路由器后被丢弃,如-t 10
表示数据包的TTL为10。
traceroute
:追踪数据包到达目标主机的路径,即显示经过的所有路由器的IP地址和响应时间。用法:traceroute [选项] [主机名或IP地址]
。例如,traceroute www.baidu.com
表示追踪到达百度服务器的路径。常用的选项有:-n
: 不进行域名解析,即只显示IP地址,而不显示主机名。-m
: 指定最大跳数(hops),即最多经过多少个路由器,如-m 15
表示最大跳数为15。-q
: 指定每个路由器发送的查询次数,如-q 3
表示每个路由器发送3次查询。-w
: 指定等待响应的超时时间,单位为秒,如-w 2
表示等待2秒后超时。
ifconfig
: 显示或配置网络接口的信息,如IP地址、子网掩码、广播地址等。用法:ifconfig [选项] [接口名] [参数]
。例如,ifconfig eth0
表示显示eth0接口的信息。常用的选项有:-a
: 显示所有接口的信息,包括未激活的接口。-s
: 显示简略格式的接口信息,只包括接口名、IP地址、MTU等。
常用的参数有:up
: 激活接口,使其能够传输数据。down
: 停止接口,使其不能传输数据。mtu [value]
: 设置接口的最大传输单元(MTU),即每个数据包能够传输的最大字节数,如mtu 1500
表示设置MTU为1500字节。[ip-address]
: 设置接口的IP地址,如192.168.1.100
表示设置IP地址为192.168.1.100。
netstat
: 显示网络连接、路由表、接口状态等信息。用法:netstat [选项]
。例如,netstat -an
表示显示所有连接和监听端口的信息,并不进行域名解析。常用的选项有:-a
: 显示所有连接和监听端口的信息。-n
: 不进行域名解析,即只显示IP地址和端口号,而不显示主机名和服务名。-t
: 只显示TCP协议的连接信息。-u
: 只显示UDP协议的连接信息。-r
: 显示路由表信息。-i
: 显示接口信息。
nslookup
: 查询域名服务器,获取域名或IP地址的信息。用法:nslookup [选项] [主机名或IP地址] [域名服务器]
。例如,nslookup www.baidu.com
、nslookup www.baidu.com 8.8.8.8
表示使用Google的公共DNS服务器(8.8.8.8)查询百度的域名对应的IP地址。
表示查询百度的域名对应的IP地址。常用的选项有:-type
: 指定查询的记录类型,如A、MX、NS等,如-type=MX
表示查询邮件交换记录。-timeout
: 指定查询的超时时间,单位为秒,如-timeout=5
表示查询5秒后超时。-debug
: 显示调试信息,如查询过程中的详细信息。
4. 进程管理命令
进程是指在系统中运行的程序的实例。Linux系统中有多种命令可以用来管理和监控进程,如查看进程信息、终止进程、调整进程优先级等。本节将介绍三个常用的进程管理命令:ps
、top
和kill
。
4.1 ps命令
ps
命令用于显示当前运行的进程信息,如进程ID、用户、CPU占用、内存占用等。它有多种选项可以用来控制输出的格式和内容。下面是一些常见的用法:
-
ps
:不带任何选项的ps
命令只显示当前终端下的进程信息 -
ps -e
:使用-e
选项可以显示所有进程的信息 -
ps -f
:使用-f
选项可以显示完整格式的进程信息,包括用户、进程ID、父进程ID、启动时间、终端、CPU时间和命令等 -
ps -l
:使用-l
选项可以显示长格式的进程信息,包括优先级、内存占用、状态、信号等 -
ps -u [user]
:使用-u [user]
选项可以只显示指定用户的进程信息 -
ps -p [pid]
:使用-p [pid]
选项可以只显示指定进程ID的进程信息
4.2 top命令
top
命令用于动态显示当前系统的进程状态,如CPU占用、内存占用、运行时间等。它会不断刷新屏幕,以实时反映系统的变化。它也有多种选项可以用来控制输出的格式和内容。下面是一些常见的用法:
-
top
:不带任何选项的top
命令会显示系统概况和所有进程的状态,按CPU占用率从高到低排序 -
top -d [seconds]
:使用-d [seconds]
选项可以指定刷新间隔,单位为秒 -
top -p [pid]
:使用-p [pid]
选项可以只显示指定进程ID的进程状态
在top
命令的交互模式下,可以使用以下按键进行操作:
- 空格键或Enter键:立即刷新屏幕。
- P键或Shift+P键:按CPU占用率排序,从高到低。
- M键或Shift+M键:按内存占用率排序,从高到低。
- T键或Shift+T键:按时间/累计时间排序,从高到低。
- N键或Shift+N键:按进程ID排序,从低到高。
- U键或Shift+U键:指定用户,如输入root表示只显示root用户的进程状态。
- K键或Shift+K键:杀死进程,如输入1234表示杀死进程ID为1234的进程。
- Q键或Shift+Q键:退出
top
命令。
4.3 kill命令
kill
命令用于发送信号给指定的进程,用于终止进程。它有多种选项可以用来指定发送的信号类型。下面是一些常见的用法:
-
kill [pid]
:不带任何选项的kill
命令会向指定进程ID的进程发送终止信号(SIGTERM) -
kill -l
:使用-l
选项可以列出所有可用的信号名称和编号 -
kill -s [signal] [pid]
:使用-s [signal]
选项可以指定发送的信号名称 -
kill -n [number] [pid]
:使用-n [number]
选项可以指定发送的信号编号
在Linux系统中,有多种信号可以用来控制进程的行为,其中最常用的两种是:
- SIGTERM:终止信号,编号为15,是
kill
命令的默认信号。它会向进程发送一个请求,要求进程自行结束。进程可以捕获并忽略该信号,或者在结束前执行一些清理操作。 - SIGKILL:强制终止信号,编号为9,是
kill
命令的最强力的信号。它会直接终止进程,不给进程任何机会做任何处理。进程无法捕获或忽略该信号。
通常情况下,应该优先使用SIGTERM信号来终止进程,以避免造成数据丢失或系统不稳定。只有当SIGTERM信号无效时,才应该使用SIGKILL信号。
5. 系统管理命令:
date
:显示或设置系统时间和日期。用法:date [选项] [时间字符串]
。例如,date
表示显示当前系统的时间和日期。常用的选项有:-s
: 设置系统时间和日期,如-s "2021-12-31 23:59:59"
表示将系统时间和日期设置为2021年12月31日23时59分59秒。-d
: 显示指定时间字符串的时间和日期,如-d "next year"
表示显示下一年的时间和日期。-u
: 显示UTC(协调世界时)的时间和日期,而不是本地时区的时间和日期。+FORMAT
: 指定显示的时间和日期格式,如+FORMAT "%Y-%m-%d %H:%M:%S"
表示以年-月-日 时:分:秒的格式显示时间和日期。
uname
:显示系统信息,如内核版本、操作系统类型等。用法:uname [选项]
。例如,uname -a
表示显示所有系统信息。常用的选项有:-s
: 显示内核名称,如Linux。-n
: 显示主机名,如localhost.localdomain。-r
: 显示内核版本,如3.10.0-957.el7.x86_64。-v
: 显示内核发行版本,如#1 SMP Thu Nov 8 23:39:32 UTC 2018。-m
: 显示机器硬件名称,如x86_64。-p
: 显示处理器类型,如x86_64。-i
: 显示硬件平台,如x86_64。-o
: 显示操作系统名称,如GNU/Linux。
free
:显示系统内存使用情况。用法:free [选项]
。例如,free -h
表示以人类可读的格式显示系统内存使用情况,如KB、MB、GB等。常用的选项有:-b
: 以字节为单位显示内存使用情况。-k
: 以KB为单位显示内存使用情况。-m
: 以MB为单位显示内存使用情况。-g
: 以GB为单位显示内存使用情况。-t
: 显示内存总计行,即所有内存类型的总和。
df
:显示文件系统的磁盘空间使用情况。用法:df [选项] [文件或目录]
。例如,df -h /home
表示以人类可读的格式显示/home目录所在的文件系统的磁盘空间使用情况。常用的选项有:-a
: 显示所有文件系统,包括特殊文件系统和虚拟文件系统。-h
: 以人类可读的格式显示磁盘空间使用情况,如KB、MB、GB等。-i
: 显示inode信息,而不是磁盘块信息。-T
: 显示文件系统类型,如ext4、xfs等。
6. 软件包管理命令:
yum
:用于基于RPM的Linux发行版,如CentOS、Fedora等。用法:yum [选项] [命令] [软件包名]
。例如,yum install httpd
表示安装httpd软件包及其依赖。常用的选项有:-y
: 自动回答yes,即在安装或卸载过程中不询问用户是否确认操作。--enablerepo
: 启用指定的软件仓库,如--enablerepo=epel
表示启用epel仓库。--disablerepo
:禁用指定的软件仓库。用法:--disablerepo=[仓库名]
。例如,--disablerepo=base
表示禁用base仓库。如果要禁用多个仓库,可以用逗号分隔,如--disablerepo=base,updates
表示禁用base和updates仓库。如果要禁用所有仓库,可以用星号代替仓库名,如--disablerepo=*
表示禁用所有仓库。install
:安装指定的软件包及其依赖。用法:install [软件包名]
。例如,install httpd
表示安装httpd软件包及其依赖。如果要安装多个软件包,可以用空格分隔,如install httpd mysql-server
表示安装httpd和mysql-server软件包及其依赖。update
:更新指定的软件包或所有已安装的软件包。用法:update [软件包名]
。例如,update httpd
表示更新httpd软件包。如果不指定软件包名,则表示更新所有已安装的软件包。remove
:卸载指定的软件包及其依赖。用法:remove [软件包名]
。例如,remove httpd
表示卸载httpd软件包及其依赖。如果要卸载多个软件包,可以用空格分隔,如remove httpd mysql-server
表示卸载httpd和mysql-server软件包及其依赖。list
:列出指定的或所有的软件包。用法:list [选项] [软件包名]
。例如,list httpd
表示列出httpd软件包的信息,如版本、大小、仓库等。如果不指定软件包名,则表示列出所有可用的软件包。常用的选项有:installed
: 只列出已安装的软件包。available
: 只列出可用的但未安装的软件包。updates
: 只列出可更新的已安装的软件包。extras
: 只列出已安装但不在任何仓库中的软件包。obsoletes
: 只列出已过时的已安装的软件包。
7. 服务管理命令:
在Linux系统中,有一些命令可以用来管理系统服务,即一些在后台运行的程序,如网络服务器、数据库服务器等。这些命令可以让我们启动、停止、重启或者查看服务的状态,以及设置服务是否随系统启动而自动运行。常用的服务管理命令有两个:service
和systemctl
。
7.1 service命令
service
命令是一个通用的服务管理命令,它可以用来管理各种类型的服务。它的基本用法是:
service [服务名] [命令]
其中,[服务名]
是要管理的服务的名称,如httpd、mysqld等;[命令]
是要执行的操作,如启动、停止、重启等。例如,如果我们想要启动httpd服务,就可以输入:
service httpd start
如果我们想要停止httpd服务,就可以输入:
service httpd stop
如果我们想要重启httpd服务,就可以输入:
service httpd restart
service
命令支持的操作有以下几种:
start
: 启动服务。如果服务已经运行,则不会有任何效果。stop
: 停止服务。如果服务已经停止,则不会有任何效果。restart
: 重启服务。相当于先执行stop
操作,再执行start
操作。reload
: 重新加载服务配置文件。这个操作可以让服务读取最新的配置文件,而不影响服务的运行。如果服务不支持这个操作,则会显示错误信息。status
: 显示服务状态。这个操作可以让我们查看服务是否运行、进程ID、内存占用等信息。
7.2 systemctl命令
systemctl
命令是一个专门用来管理systemd服务的命令,它可以用来管理使用systemd机制启动和管理的服务。它的基本用法是:
systemctl [选项] [命令] [服务名]
其中,[选项]
是一些可选的参数,用来指定一些额外的信息,如服务类型、显示方式等;[命令]
是要执行的操作,如启动、停止、重启等;[服务名]
是要管理的服务的名称,通常以.service
为后缀,如httpd.service、mysqld.service等。例如,如果我们想要启动httpd.service服务,就可以输入:
systemctl start httpd.service
如果我们想要停止httpd.service服务,就可以输入:
systemctl stop httpd.service
如果我们想要重启httpd.service服务,就可以输入:
systemctl restart httpd.service
systemctl
命令支持的选项有以下几种:
-
-t
: 指定服务类型。这个选项可以让我们只显示或操作某一类别的服务,如service、socket、target等。例如,如果我们想要查看所有类型为service的服务,就可以输入:systemctl -t service
-
-a
: 显示所有服务。这个选项可以让我们查看系统中所有存在的服务,无论它们是否运行。 -
-r
: 显示运行中的服务。这个选项可以让我们只查看系统中正在运行的服务。
systemctl
命令支持的操作有以下几种:
start
: 启动服务。如果服务已经运行,则不会有任何效果。stop
: 停止服务。如果服务已经停止,则不会有任何效果。restart
: 重启服务。相当于先执行stop
操作,再执行start
操作。reload
: 重新加载服务配置文件。这个操作可以让服务读取最新的配置文件,而不影响服务的运行。如果服务不支持这个操作,则会显示错误信息。status
: 显示服务状态。这个操作可以让我们查看服务是否运行、进程ID、内存占用等信息。enable
: 启用服务。这个操作可以让服务在系统启动时自动运行。如果服务已经启用,则不会有任何效果。disable
: 禁用服务。这个操作可以让服务在系统启动时不自动运行。如果服务已经禁用,则不会有任何效果。