Linux 相关命令
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
以下是自我总结的较为常用 or 冷门的 Linux 相关指令
有兴趣的可以看看
一、常用命令
1. ls(list files)
用于显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录。
参数
- -a
显示所有文件及目录(. 开头的隐藏文件也会列出) - -l 除文件名称外,亦将文件形态、权限、拥有者、文件大小等资讯详细列出
(显示文件详细信息)
实例
- 列出根目录( \ )下的所有目录:
ls /
- 列出当前目录的所有文件及目录:
ls -a
- 将 /bin 目录下的所有目录及文件的详细资料列出(只列出 /bin 层即可) :
ls -al /bin
2. cd(change directory)
用于切换当前工作目录
实例
- 跳到 /usr/bin/ :
cd /usr/bin
- 跳到自己的 home 目录 :
cd ~
- 跳到根目录:
cd /
- 回到上级目录
cd ./
cd .
PS:前面的好懂点,看自己怎么习惯怎么来
- 跳到目前目录的上上两层 :
cd ../../
cd ../..
PS:前面的好懂点,看自己怎么习惯怎么来
3. pwd(print work directory)
实例
查看当前所在目录:
pwd
4. cat(catch)
用于连接文件并打印到标准输出设备上
(预览文件)
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
参数
- -n 或 --number:由 1 开始对所有输出的
行数编号 - -b 或 --number-nonblank:和 -n 相似,只不过对于
空白行不编号
实例
- 查看 /etc/profile 文件内容,并显示行号
cat -n /etc/profile
- 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里 (覆盖写):
cat -n textfile1 > textfile2
- 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里 (追加写):
cat -b textfile1 textfile2 >> textfile3
5. more
类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)
是一个 基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容
常用操作命令
| 操作 | 功能说明 |
|---|---|
| 空格键space | 代表向下翻一页 |
| Enter | 代表向下翻一行 |
| q | 代表立刻离开more,不再显示该文件内容 |
| Ctrl+F | 向下滚动一屏 |
| Ctrl+B | 返回上一屏 |
| = | 输出当前行的行号 |
| :f | 输出文件名和当前行的行号 |
PS:more 指令并不能显示行号!
6. clear
用于清除屏幕
7. mkdir(make directory)
用于创建目录
参数
- -p 确保目录名称存在,不存在的就建一个
创建目录时一并创建父目录
实例
- 创建一级目录:/home/dog
mkdir /home/dog
- 创建多级目录:/home/animal/tiger
mkdir -p /home/animal/tiger
8. cp(copy file)
用于复制文件或目录
参数
- -f 覆盖已经存在的目标文件而不给出提示
- -r 递归复制整个文件夹
实例
- 将 /home/hello.txt 拷贝到 /home/bbb 目录下
cp –r /home/hello.txt /home/bbb
- 将当前目录 test/ 下的所有文件复制到新目录 newtest 下
cp –rf test/ newtest
9. rm(remove)
用于删除一个文件或者目录
参数
- -i 删除前逐一询问确认(默认讯问)
- -r 递归删除整个文件夹
- -f 强制删除不提示(一般会提示是否删除)
实例
- 删除当前目录下的所有文件及目录(不进行提示)
rm –r *
- 删除 当前目录下的 test 文件(会进行提示)
rm test.txt
10. mv(move)
用来为文件或目录改名、或将文件或目录移入其它位置
PS:当在同一个目录下进行 mv 指令操作时,相当于改名,反之即为移动
参数
- -f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
(强制操作不提示)
实例
- 将文件 aaa 改名为 bbb
mv aaa bbb
- 将 info 目录放入 logs 目录中。
注意,如果 logs 目录不存在,则该命令会将 info 改名为 logs
mv info/ logs
11. grep
用于查找文件里符合条件的字符串
参数
- -i 或 --ignore-case 忽略字母大小写
- -n 或 --line-number 显示匹配行及行号
实例
- 在当前目录中,
查找后缀带 file 的文件中包含有 test 字符串的文件,并打印出该字符串的行
grep "被查找的字符串" 文件名/目录
grep test *file
- 以递归的方式查找符合条件的文件
例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容
grep -r update /etc/acpi
12. find
用来在指定目录下查找文件(将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端)
参数
-
-ctime n : 在过去 n 天内创建的文件
-
-name name, -iname name : 按照指定的文件名查找模式查找文件,iname 会忽略大小写
-
-size n :
按照指定的文件大小查找文件。n 是 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -
-user : 查找属于指定用户名所有文件
-
-type c : c 表示文件类型
| 参数 | 作用 |
|---|---|
| d | 目录 |
| c | 字型装置文件 |
| p | 区块装置文件 |
| d | 具名贮列 |
| f | 一般文件 |
| l | 符号连结 |
| s | socket |
实例
- 按照文件名:根据名称查找 /home 目录下的 hello.txt 文件
find /home -name hello.txt
- 按照拥有者:查找/opt目录下,用户名为 root 的文件
find /opt -user root
- 将当前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime 20
- 从根目录开始查找所有扩展名为 .log 的文本文件
find / -type f -name "*.log"
13. ps(process status(流程状态(进程)))
用于显示当前进程的状态
参数:
- -e 显示所有进程
- -f 全格式
- -a 显示当前终端的所有进程信息
- -u 以用户的格式显示进程信息
- -x 显示后台进程运行的参数
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的进程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
| System V | 展示风格
------------------------ | ----------------------------------------------------------------------------------- ||
| USER | 用户名称 |
| PID | 进程号 |
| %CPU | 进程占用CPU的百分比 |
| %MEM(Memory) | 进程占用物理内存的百分比 |
| VSZ(Virtual Memory Size) | 进程占用的虚拟内存大小(单位:KB) |
| RSS(Resident Set Size) | 进程占用的物理内存大小(单位:KB) |
| TT 或 TTY | 终端名称 |
| STAT | 进程状态:其中 S:睡眠,s:表示该进程是会话的先导进程,N:表示进程拥有比普通优先级更低的优先级,R:正在运行,D:短期等待,Z:僵死进程,T:被跟踪或者被停止等待 |
| STARTED | 进程的启动时间 |
| TIME | CPU时间,即进程使用CPU的总时间 |
| COMMAND | 启动进程所用的命令和参数(执行该进程的指令),如果过长会被截断显示
实例
- 以全格式
显示当前所有的进程
ps -ef
- 显示 sshd 进程的信息
ps -ef | grep sshd # 一般都会与 grep 进行配合使用
解析:将 ps -ef 的输出结果作为 grep sshd 的输入来进行过滤(grep 查找有 sshd 的进程)
管道 "|": 将前面的结果交给下一个指令进行处理(前一条指令的输出作为下一条指令的输入)
| 名称 | 作用 |
|---|---|
| UID | 用户ID |
| PID | 进程ID |
| PPID | 父进程ID |
| C | CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程的I/O密集型运算,执行优先级会提高 |
| STIME | 进程启动的时间 |
| TTY | 完整的终端名称 |
| TIME | CPU时间 |
| CMD | 启动进程所用的命令和参数 |
- 显示指定用户信息
ps -u root //显示root进程用户信息
14. top
用于实时显示 process(进程) 的动态
参数:
- "M":根据内存使用量来排序
- "P":根据 CPU 占有率来排序
- "T":根据进程运行时间的长短来排序
- "u":根据后面输入的用户来筛选进程
- "k":根据后面输入的 PID 来杀死进程
- "q":退出
- "h":获得帮助
使用方式:
我们输入 top,之后紧接着输入某一参数即可,如:P,就可以以 CPU 使用率进行排序,按 q 可以退出 top(PS:直接输入即可,记得大写)
// 显示进程号为 139 的进程信息,CPU、内存占用率等
top -p 139
或
top
P
- 监视特定用户,比如我们监控 root 用户
- top: 输入此命令,按回车键,查看执行的进程
- u:然后输入 u ,再输入用户名 回车即可
- 终止指定的进程,比如我们要结束 tom 登录
- top: 输入此命令,按回车键,查看执行的进程
- k:然后输入 k 回车,再输入要结束的进程ID号
- 指定系统状态更新的时间(每隔10s自动更新),默认是3s(每 10s 刷新该进程的使用状态 1 次)
top -d 10
15. whoami
查看当前系统的用户名称
16. who
用于显示系统中有哪些使用者正在使用,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。(查看当前所有登录系统的用户信息)
参数:
- -m 显示运行 who 命令的用户名、登录终端和登录时间
- -q 显示用户的登录账号和登录用户的数量
- -u 显示最后一次登录的时间
实例
- 显示当前登录系统的用户
who //显示当前登录系统的用户
- 显示用户的登录账号和登录用户的数量
who -q
17. w
用于显示目前登录系统的用户信息 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序
参数:
- -h 不显示各栏位的标题信息列
- -l 使用详细格式列表,此为预设值
- -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的 CPU 时间
- -u 忽略执行程序的名称,以及该程序耗费的 CPU 时间信息
实例
- 显示当前用户(详细版)
// 显示当前用户登录信息及执行的命令
w
- 以精简模式显示
w -s
- 不显示标题
w -h
PS: 如果 w 指令携带用户名,则只显示指定用户的信息,否则显示当前所有登录用户的信息
18. tar(tape archive)
格式;tar [参数] 打包文件名 文件
用于备份文件
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 文件(该指令具有双重功能)
PS:打包是将多个文件打包成一个文件;压缩是将一个文件压缩成小文件(打包就是把东西装进袋子,压缩就是拿抽气机抽气)
参数:
| 选项 | 功能 |
|---|---|
| -c | 打包成 .tar文件 |
| -v | 显示详细信息 |
| -f | 指定压缩后的文件名 |
| -z | -z 表示用 gzip 的格式进行压缩或解压 |
| -x | 解压 .tar文件 |
| -C | -C 指定解压目录(如果没有写的话,将无法指定解压目录!) |
PS:-f 后面要跟参数(file),所以要放最后一个,别的顺序随意
- 压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt # 将pig.txt、cat.txt打包成一个文件,并压缩
- 将 /home 的文件夹压缩成 myhome.tar.gz
tar zvcf myhome.tar.gz /home
- 将 pc.tar.gz 解压到当前目录
tar -zvxf pc.tar.gz
- 将 myhome.tar.gz 解压到 /opt/tmp2 目录下
mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2 # 将 myhome.tar.gz 解压到/opt/tmp2文件夹下
# 因为压缩的文件 具有.tar 和 .gz后缀,所以需要用-z 与 -x进行解压
19. gzip
用于压缩文件(文件经过压缩后,其名称后面会多出".gz"的扩展名)
gzip 用于压缩文件,gunzip 用于解压
参数:
-d 解压文件
实例
- 将 /home 下的 hello.txt 文件进行压缩
gzip /home/hello.txt
- 将 /home 下的 hello.txt.gz 文件进行解压缩
gunzip /home/hello.txt.gz
或
gzip -d /home/hello.txt.gz
20. zip
格式;zip [参数] 打包文件名 文件
用于压缩文件(压缩后的文件后缀名为 .zip)
zip 用于压缩文件,unzip 用于解压,这个在项目打包发布中很有用
基本语法:
- zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
- 常用选项: -r 递归压缩,即压缩目录
- unzip [选项] XXX.zip (功能描述:解压缩文件)
- 常用选项:-d<目录> 指定解压后文件的存放目录
实例
- 将 /home 下的所有文件/文件夹进行压缩成 myhome.zip
zip -r myhome.zip /home # 将home目录及其包含的文件和子文件夹都压缩
- 将 myhome.zip 解压到 /opt/tmp 目录下
mkdir /opt/tmp unzip -d /opt/tmp /home/myhome.zip
21. man
获得帮助信息
基本语法:man[帮助或配置文件] (功能描述:获得帮助信息)
- 查看 ls 命令的帮助信息
man ls
二、系统管理
1. df(disk free)
用于
显示目前在 Linux 系统上的文件系统磁盘使用情况统计
检测文件系统的磁盘空间占用和空余情况
参数:
- -a(all) 显示所有文件系统的磁盘使用情况
- -k(kilobytes) 以 k 字节为单位显示
- -t(type) 显示指定的文件系统的磁盘空间的使用情况
- -T 显示文件系统的类型
实例
显示文件系统的磁盘使用情况统计:
df
2. du(disk usage)
用于
显示目录或文件的大小
显示指定的目录或文件所占用的磁盘空间
参数:
- -a 递归显示指定文件中各文件和子目录中文件占用的数据块
- -b 以字节为单位显示磁盘占用情况
- -s 显示指定目录或文件的数据块
- -l 重复计算硬件连接的文件
实例
- 显示目录或者文件所占空间:
du
- 显示指定文件所占空间
du pig.txt
- 递归显示指定文件中各文件和子目录中文件所占空间
du -a /home
mkfs(make file system)
用于在特定的分区上建立 Linux 文件系统(格式化命令)
参数:
- -V 详细显示模式
实例
- 在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :
mkfs -V -t msdos -c /dev/hda5
4. rpm(redhat package manager)
用于管理套件(便携安装卸载应用软件)
参数:
- -a 查询系统安装的所有软件包
- -e 卸载软件包
- -i 指定安装软件包
- -v 显示安装的详细信息
- -q 查询系统是否
实例
- 显示软件安装信息
# rpm -qi dejagnu-1.4.2-10.noarch.rpm
5. su(switch user)
用于变更为其他使用者的身份,
除 root 外,需要键入该使用者的密码
实例
- 不写用户名代表 root
# 切换到 root 用户
su
- 切换到 alice 用户
su alice
切换用户,但不改变工作目录
6. useradd
用于建立用户帐号
实例
- 添加一般用户
# useradd tt
7. passwd
用来更改使用者的密码
8. userdel
用于删除用户帐号 userdel 可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件
参数:
- -r 删除用户登录目录以及目录中所有文件
实例
- 删除用户账号
userdel alice