linux
新手必须掌握的命令
命令名称、命令参数、命令对象之间请用空格键分隔
命令对象: 一般是指要处理的文件、目录、用户等资源
命令参数: 可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用–与-作为前缀
长命令间不能合并
只有短命令与短命令间可以合并,合并后仅仅保留一个-号,ps参数可以不加-
如果我们在系统终端执行一个命令后想立即终止它,可以同时按下Ctrl+c组合键,比如某些会一直不断在屏幕上输出信息,影响后续输入的
查看帮助命令
man
man man 查看 man命令本身的帮助信息
man - an interface to the on-line reference manuals
man -h or man -help 查看所有命令
man命令中常用的按键及其用途
| 按键 | 用途 |
|---|---|
| 空格键 | 向下翻页 |
| page down | 向下翻页 |
| page up | 向上翻页 |
| home | 直接前往首页 |
| end | 直接前往尾页 |
| / | 从上到下搜索莫格关键词,如"/linux" |
| ? | 从下到上搜索某个关键词,如"?linux" |
| n | 定位到下一个搜索到的关键词 |
| N | 定位到上一个搜索到的关键词 |
| q | 退出帮助文档 |
man命令的帮助信息的结构及其意义
| 结构名称 | 代表意义 |
|---|---|
| NAME | 命令的名称 |
| SYNOPSIS | 参数的大致用法 |
| DESCRIPTION | 介绍说明 |
| EXAMPLES | 演示说明 |
| OVERVIEW | 概述 |
| defaults | 默认的功能 |
| OPTIONS | 具体的可用选项 |
| ENVIRONMENT | 环境变量 |
| FILES | 用到的文件 |
| see also | 相关的资料 |
| HHISTORY | 维护历史与联系方式 |
例如:输入man ls回车
常用系统工作命令
echo
用于在终端输出字符串或变量提取后的值
格式 echo[字符串 | $变量]
例如
date
用于显示设置系统的时间或日期
格式[选项] [+指定的格式]
date命令中的参数以及作用
| 参数 | 作用 |
|---|---|
| %Y | 年 |
| %m | 月 |
| %d | 日 |
| %t | 跳格[Tab吉安] |
| %H | 小时(00-23) |
| %I | I小时(00-12) |
| %M | 分钟(00-59) |
| %S | 秒(00-59) |
| %j | 今年中的第几天 |
例如:
reboot
用于重启系统
只能使用root管理员来重启
poweroff
用于关闭系统
只能root
wget
用于在终端中下载网络文件,格式为 wegt[参数] 下载地址
wget命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -b | 后台下载模式 |
| -p | 下载到指定目录 |
| -t | 最大尝试次数 |
| -c | 断点续传 |
| -p | 下载页面内所有资源,包括图片,视频等 |
| -r | 递归下载 |
例如: 使用 wget 命令递归下载 www.linuxprobe.com 网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为 www.linuxprobe.com 的目录
ps
用于查看系统中的进程状态
格式 ps[参数]
ps参数以及作用
| 参数 | 作用 |
|---|---|
| -a | 显示所有进程(包括其他用户的进程) |
| -u | 用户以及其他详细信息 |
| -x | 显示没有控制终端的进程 |
在linux系统中,有5中常见的进程状态
| R(运行) | 进程正在运行或在运行队列中等待 |
| S(中断) | 进程处于休眠中,可以接收信号 |
| D(不可中断) | 进程不想赢系统异步信号,即使kill也不中断 |
| Z(僵死) | 进程已经停止,但描述符依然存在,直到父进程调用wait()系统函数或进程释放 |
| T(停止) | 进程收到停止信号后停止运行 |
执行 ps aux
top
动态地监视进程活动与系统负载信息
相当于强化版的windows任务管理器
第一行: 系统时间 13:46:14 运行时间:2:28 (两个小时28分) 登录终端数(2users) 系统负载(三个数值分别为 1 分钟、5 分钟、15 分钟内的平均值,数值越小意味着负载越低)
第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程 数。
第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
第三行中的85.9id意味着85.9%的cpu处理器资源处于空闲
第 4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量
pidof
用于查询某个服务进程的pid值
格式为: pidof [参数] [服务名称]
每个进程的进程号码值(PID)是唯一的,因此可以通过 PID 来区分不同的进程
例如
kill
用于终止摸个指定pid的进程
格式: kill[参数] [进程pid]
例如
killall
用于终止某个指定名称的服务的全部进程
格式: killall [参数] [服务名称]
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这
些进程会比较麻烦,此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程
系统状态检测命令
ifconfig
用于获取网卡配置与网络状态等信息
格式: ifconfig [网络设备] [参数]
网卡名称: ens33
ip地址: 192.168.22.134
的网卡物理地址(又称为 MAC 地址): 00:0c:29:67:97:95
RX、TX 的接收数据包与发送数据包的个数及累计流量:
RX packets 13528 bytes 13651799 (13.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9650 bytes 3119275 (3.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname
用于查看系统内核与系统版本
格式: uname[-a]
在使用 uname 命令时,一般会固定搭配上-a 参数来完整地查看当前系统的内核名称、主
机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名
称等信息
uptime
用于查看系统的负载信息
显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息
平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况
负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5
free
用于显示当前系统中内存的使用量信息
格式: free[-h]
结合使用-h 参数以更人性化的方式输出当前内存的实时使用量信息
who
用于查看当前登入主机的用户终端信息
格式: who[参数]
last
用于查看所有系统的登录记录
格式: last[参数]
由于这些信息都是以日志文件的形式保
存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而
判断系统有无被恶意入侵!
history
用于查看历史执行过的最近1k条命令
如果觉得 1000 不够用,还可以自定义/etc/profile 文件中的HISTSIZE 变量值
格式: history[-c]
在使用 history 命令时,如果使用-c 参数则会清空所有的命令历史记录。
还可以使用“!编码数字”的方式来重复执行某一次的命令
历史命令会被保存到用户家目录中的.bash_history 文件中。Linux 系统中以点(.)开头的文件代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat 命令查看其文件内容
sosreport
用于收集系统配置及架构信息并输出诊断文档
当 Linux 系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或让他们能提前了解某些复杂问题
工作目录切换命令
pwd
显示用户当前所处的工作目录
格式 pwd[选项]
cd
切换工作路径
格式: cd[目录名称]
cd -: 返回到上一次所处的目录
cd … : 进入上级目录
cd ~ 切换到当前用户的home目录
cd ~username : 切换到其他用户的home目录
ls
显示目录中的文件信息
格式: ls [选项] [文件]
ls -a 看到全部文件(包括隐藏文件)
ls -l 查看文件的属性,大小等详细信息
ls -al : 可查看当前目录中的所有文件并输出这些文件的属性信息
如果想要查看目录属性信息,则需要额外添加一个-d 参数
文本文件编辑命令
cat
查看纯文本文件(内容较少)
格式: cat [选项] 文件
cat -n 文件: 显示行号
more
查看纯文本文件(内容较多)
more[选项] 文件
head
查看纯文本文档的前n行
格式: head[选项] 文件
tall
产看纯文本文档的后n行
tail[选项] 文件
tail -n 20 文件名: 查看文本内容的最后 20 行
tr
替换文本文件的字符
tr[原来的字符] [目标字符]
快速地替换文本中的一些词汇,又或者把整个文本内容都进行替换,就可以先使用 cat 命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr 命令进行替换操作即可
wc
统计指定文本的行数,字数,字节数
格式: wc[参数] 文本
wc的参数以及作用
| 参数 | 作用 |
|---|---|
| -l | 只显示行数 |
| -w | 只显示单词数 |
| -c | 只显示字节数 |
passwd
用于保存系统账户信息的文件
wc -l /etc/passwd
统计当前系统中有多少个用户
stat
查看文件的具体存储信息和时间等信息
格式 stat 文件名称
cut
用于按“列”提取文本字符
格式: “cut [参数] 文本”
参数及其使用
| 参数 | 作用 |
|---|---|
| -f | 设置需要看的列数 |
| -d | 设置间隔符号 |
passwd 在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用
下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容
diff
比较多个文本文件的差异
diff [参数] 文件 文件
| 参数 | 作用 |
|---|---|
| –brief | 确认两个文件是否不同 |
| -c | 详细比较多个文件的差异之处 |
文件目录管理命令
touch
创建空白文件或设置文件的时间
格式为“touch [选项] [文件]”
| 参数 | 作用 |
|---|---|
| -a | 仅修改"读取时间"(atime) |
| -m | 仅修改“修改时间”(mtime) |
| -d | 同时修改 atime 与 mtime |
先使用 ls 命令查看一个文件的修改时间,然后修改这个文件,最后再通过 touch
命令把修改后的文件时间设置成修改之前的时间(很多黑客就是这样做的呢)
mkdir
于创建空白的目录
mkdir [选项] 目录
-p 参数来递归创建出具有嵌套叠层关系的文件目录
cp
用于复制文件或目录
“cp [选项] 源文件 目标文件
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
cp 命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -p | 保留原始文件的属性 |
| -d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
| -r | 递归持续复制(用于目录) |
| -i | 若目标文件存在则询问是否覆盖 |
| -a | 相当于-pdr(p、d、r 为上述参数) |
mv
令用于剪切文件或将文件重命名
格式为“mv [选项] 源文件 [目标路径|目标文件名]”
rm
于删除文件或目录
格式为“rm [选项] 文件”
-f : 系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后跟上-f 参数来强制删除
-r : 想要删除一个目录,需要在 rm 命令后面一个-r 参数才可以,否则删除不掉
dd
令用于按照指定大小和个数的数据块来复制文件或转换文件
格式为“dd [参数]”。
dd 命令的参数及其作用
| 参数 | 作用 |
|---|---|
| if | 输入文件名称 |
| of | 输出文件名称 |
| bs | 设置每个块的大小 |
| count | 设置要复制块的数量 |
例如: 我们可以用 dd 命令从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后
保存成名为 560_file 的文件
使用 dd 命令来压制出光盘镜像文件,将它变成一个可立即使用的 iso 镜像
file
于查看文件的类型
格式为“file 文件名”
打包压缩与搜索命令
tar
于对文件进行打包压缩或解压
格式为“tar [选项] [文件]”
常见的文件格式比较多,其中主要使用的是.tar 或.tar.gz 或.tar.bz2 格式
tar 命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -c | 创建压缩文件 |
| -x | 解开压缩文件 |
| -t | 查看压缩包内有哪些文件 |
| -z | 用 Gzip 压缩或解压 |
| -j | 用 bzip2 压缩或解压 |
| -v | 显示压缩或解压的过程 |
| -f | 目标文件名 |
| -P | 保留原始的权限与属性 |
| -p | 使用绝对路径来压缩 |
| -C | 指定解压到的目录 |
一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩
相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”。
例如:
tar -czvf etc.tar.gz /etc
接下来将打包后的压缩包文件指定解压到/root/etc 目录中,(先使用 mkdir 命令来创建
/root/etc 目录)
sudo mkdir /root/etc
sudo tar xzvf etc.tar.gz -C /root/etc
grep
用于在文本中执行关键词搜索,并显示匹配的结果
格式为“grep [选项] [文件]”
grep 命令的参数及其作用
| 参数 | 作用 |
|---|---|
| -b | 将可执行文件(binary)当作文本文件(text)来搜索 |
| -c | 仅显示找到的行数 |
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向选择—–仅列出没有“关键词”的行 |
/etc/passwd 文件是保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用 grep 命令来查找出当前系统中不允许登录系统的所有用户信息
grep /sbin/nologin /etc/passwd
find
用于按照指定条件来查找文件
格式为“find [查找路径] 寻找条件 操作""
find 命令中的参数以及作用
| 参数 | 作用 |
|---|---|
| -name | 匹配名称 |
| -perm | 匹配权限(mode 为完全匹配,-mode 为包含即可) |
| -user | 匹配所有者 |
| -group | 匹配所有组 |
| -mtime -n +n | 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前) |
| -atime -n +n | 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前) |
| -ctime -n +n | 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前) |
| -nouser | 匹配无所有者的文件 |
| -nogroup | 匹配无所有组的文件 |
| -newer f1 !f2 | 匹配比文件 f1 新但比 f2 旧的文件 |
| –type b/d/c/p/l/f | 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管 |
| -size | 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于50KB 的文件) |
| -prune | 忽略某个目录 |
| -exec …… {}; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
Linux 系统中的配置文件会保存到/etc 目录中(详见第 6 章)。如果要想获取到该目录中所有以 host 开头的文件列表,可以执行如下命令
find /etc -name “host*” -print