Linux学习(一)
linux操作学习(一)
常用linux命令
man man 查看man的帮助信息 |
man命令中常用按键以及作用
按键 | 作用 |
---|---|
空格键 | 向下翻一页 |
PaGe down | 向下翻一页 |
PaGe up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man命令中帮助信息的结构以及意义
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
Tab键
它能够实现对命令、参数或文件的内容补全
re<Tab键><Tab键> |
ctrl+c
当同时按下键盘上的Ctrl和字母c的时候,意味着终止当前进程的运行。假如执行了一个错误命令,或者是执行某个命令后迟迟无法结束,这时就可以冷静地按下Ctrl+c组合键,命令行终端的控制权会立刻回到我们手中。
Ctrl+d
当同时按下键盘上的Ctrl和字母d的时候,表示键盘输入结束。
Ctrl+l
当同时按下键盘上的Ctrl和字母l的时候,会清空当前终端中已有的内容(相当于清屏操作)
常用系统工作命令
echo命令
echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为
echo [字符串] [$变量] |
date命令
date命令用于显示或设置系统的时间和日期,语法格式为
date [+指定的格式] |
date命令中的参数及其作用
参数 | 作用 |
---|---|
%S | 秒(00~59) |
%M | 分钟(00~59) |
%H | 小时(00~23) |
%I | 小时(00~12) |
%m | 月份(1~12) |
%p | 显示出AM或PM |
%a | 缩写的工作日名称(例如:Sun) |
%A | 完整的工作日名称(例如:Sunday) |
%b | 缩写的月份名称(例如:Jan) |
%B | 完整的月份名称(例如:January) |
%q | 季度(1~4) |
%y | 简写年份(例如:20) |
%Y | 完整年份(例如:2020) |
%d | 本月中的第几天 |
%j | 今年中的第几天 |
%n | 换行符(相当于按下回车键) |
%t | 跳格(相当于按下Tab键) |
将系统时间设置为2022年3月19日10点09分的date命令如下
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的早晚,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示
timedatectl命令
timedatectl命令用于设置系统的时间,英文全称为”time date control”,语法格式
timedatectl [参数] |
timedatectl命令中的参数以及作用
参数 | 作用 |
---|---|
status | 显示状态信息 |
list-timezones | 列出已知时区 |
set-time | 设置系统时间 |
set-timezone | 设置生效时区 |
查看系统时间与时区的方法如下
手动设置为上海时区
reboot命令
reboot命令用于重启系统,输入改命令回车之后就可执行,需要使用root身份来操作
poweroff命令
poweroff命令用于关闭系统,输入该命令之后按回车即可执行
wget
wget命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格式为
wget [参数] 网址 |
借助于wget命令,可以无须打开浏览器,直接在命令行界面中就能下载文件
wget命令中的参数以及作用
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
ps命令
ps命令用于查看系统中的进程状态,英文全称为processes,语法
ps [参数] |
ps命令中的参数以及作用
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示
R(运行):进程正在运行或在运行队列中等待。 |
进程状态
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
进程的所有者 | 进程ID号 | 运算器占用率 | 内存占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程状态 | 被启动的时间 | 实际使用CPU的时间 | 命令名称与参数 |
root | 1 | 0.0 | 0.5 | 244740 | 10636 | ? | Ss | 07:54 | 0:02 | /usr/lib/systemd/ systemd –switched-root –system –deserialize 18 |
root | 2 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:54 | 0:00 | [kthreadd] |
root | 3 | 0.0 | 0.0 | 0 | 0 | ? | I< | 07:54 | 0:00 | [rcu_gp] |
root | 4 | 0.0 | 0.0 | 0 | 0 | ? | I< | 07:54 | 0:00 | [rcu_par_gp] |
root | 5 | 0.0 | 0.0 | 0 | 0 | ? | I< | 07:54 | 0:00 | [kworker/0:0H-kbl |
root | 6 | 0.0 | 0.0 | 0 | 0 | ? | I< | 07:54 | 0:00 | [mm_percpu_wq] |
root | 7 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:54 | 0:00 | [ksoftirqd/0] |
root | 8 | 0.0 | 0.0 | 0 | 0 | ? | I | 07:54 | 0:00 | [rcu_sched] |
root | 9 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:54 | 0:00 | [migration/0] |
pstree命令
pstree命令用于以树状图的形式展示进程之间的关系,英文全称为process tree 输入改命令之后按回车执行即可
top命令
top命令用于动态监控进程活动以及系统负载等信息
第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。 |
nice命令
nice命令用于调整进程的优先级,语法格式
nice 优先级数字 服务名称 |
在top命令输出的结果中,PR和NI值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高。在日常的生产工作中,可以将一些不重要进程的优先级调低,让紧迫的服务更多地利用CPU和内存资源,以达到合理分配系统资源的目的。例如将bash服务的优先级调整到最高
pidof命令
pidof命令用于查询某个指定服务进程的pid号码值,语法格式为
pidof [参数] 服务名称 |
每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程。例如,执行如下命令来查询本机上sshd服务程序的PID:
killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程,语法格式为
killall [参数] 服务名称 |
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果用kill命令逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。下面以httpd服务程序为例,来结束其全部进程
如果在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键(生产环境中比较常用的一个组合键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加一个&符号,这样命令将进入系统后台来执行
系统状态检测命令
ifconfig命令
ifconfig命令用于获取网卡配置与网络等信息,英文全称为 interface config,语法格式
ifconfig [参数][网络设备] |
ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量
uname命令
uname命令用于查看西永内核版本与系统架构等信息,英文全称为 Unix name 语法
uname [-a] |
在使用uname命令时,一般要固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息
uptime命令
uptime命令用于查看系统的负载信息
free命令
free命令用于显示当前系统中内存的使用量信息,语法
free [-h] |
who命令
who命令用于查看当前登入主机的用户终端信息
这3个简单的字母可以快速显示出所有正在登录本机的用户名称以及他们正在开启的终端信息;如果有远程用户,还会显示出来访者的IP地址
last命令
last命令用于调取主机的被访记录
ping命令
ping命令用于测试主机之间的网络连通性
ping [参数] 主机地址 |
ping命令中的参数以及作用
参数 | 作用 |
---|---|
-c | 总共发送次数 |
-l | 指定网卡名称 |
-i | 每次间隔时间(秒) |
-W | 最长等待时间(秒) |
tracepath命令
tracepath命令用于显示数据包到达目的主机途中经过的所有路由信息,语法
tracepath [参数] 域名 |
netstat命令
netstat命令用于显示如网络连接 路由表 接口状态等的网络相关信息,英文全称为 netword status 语法
netstat [参数] |
netstat命令中的参数以及作用
-a | 显示所有连接中的Socket |
---|---|
-p | 显示正在使用的Socket信息 |
-t | 显示TCP协议的连接状态 |
-u | 显示UDP协议的连接状态 |
-n | 使用IP地址,不使用域名 |
-l | 仅列出正在监听的服务状态 |
-i | 显示网卡列表信息 |
-r | 显示路由表信息 |
显示网卡列表
history命令
history命令用于显示执行过的命令的历史
history [-c] |
历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容:
要清空当前在主机上执行的linux命令的历史记录
sosreport命令
sosreport命令用于收集系统配置及架构信息并输出诊断文档
当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,抑或让他们能提前了解某些复杂问题。在下面的输出信息中,加粗的部分是收集好的资料压缩文件以及校验码
查找定位文件的命令
pwd命令
pwd命令用于显示用户当前所处的工作目录,英文全称为 print working directory
cd命令
cd命令用于切换当前的工作路径,英文为 change directoey 语法格式为
cd [参数] [目录] |
这个命令应该是最常用的一个命令了,可以使用 cd - 命令返回上一次所处的目录,使用cd .. 命令进入上级目录,以及使用 cd ~命令切换到当前用户的家目录亦或使用 cd ~username 命令切换到其他用户的家目录
ls命令
ls命令用于显示目录中的文件信息,英文全称为list 语法
ls [参数] [文件名称] |
使用ls -a 参数能够看到全部的文件,使用 ls -l参数可以查看文件的属性,大小等详细信息.将这两个参数进行整合之后再次执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息
如果想要查看目录属性信息,需要额外添加一个-d参数
tree命令
tree命令用于以树状图的形式列出目录内容以及结构,输入该命令之后按回车可以执行
虽然ls命令可以很便捷的查看目录内有哪些文件,但是无法直观的获取到目录内文件的层次结构
find命令
find命令用于按照指定的条件来查找文件所对应的位置,语法
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 …… {}; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
这里说明一下 -exec 参数的作用,这个参数用于把find命令搜索到的结果交由紧随其后的命令做进一步处理.他类似于管道符
linux系统中的配置文件都会保存到/etc目录 如果想要获取改目录中所有以host开头的文件列表
如果要在整个系统中搜索权限中包括suid权限的所有文件,只需要使用-4000
locate命令
locate命令用于按照命令快速搜索文件所对应的位置,语法格式为 locate文件名称
使用find命令进行全麻搜索虽然更准确,但是效率有点低.如果是仅仅想找一些常见的而且又知道大概名称的文件,不如试试locate命令.在使用locate命令时,先使用updatedb命令生成一个索引库文件,这个库文件的名称是/var/lib/mlocate/mlocate.db,后续在使用locate命令搜索文件时就是在该库中进行查找操作,速度会快很多
第一次使用locate命令之前,记得先执行updatedb命令来生成索引数据库在进行查找
whereis命令
whereis命令用于按照名称快速搜索二进制程序(命令),源代码以及帮助文件对应的位置,语法格式
whereis 命令名称 |
文本文件编辑命令
cat命令
cat命令用于查看纯文本文件(内容较少的),英文全称为 concatenate 语法
cat [参数] 文件名称 |
linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点
如果想要在查看内容的同时显示行号的话,在cat命令后面加一个-n参数
more命令
more命令用于查看纯文本文件
more [参数] 文件名称 |
head命令
head命令用于查看纯文本文件的前n行,语法
head [参数] 文件名称 |
tail命令
tail命令用于查看纯文本文件的后n行或者持续刷新的文件的最新的内容,语法
tail [参数] 文件名称 |
我们还可能遇到另一种情况,比如要查看文本内容的最后十行,这个时候就需要用到tail命令的操作方法与head命令相似
tail命令还能够持续刷新一个文件的内容,当想要实时查看最新的日志文件的时候,这特别有用,此时的命令格式为
tail -f 文件名称 |
tr命令
tr命令用于替换文本内容中的字符,英文全称为 transform 语法
tr [原始字符] [目标字符] |
在很多时候,我们想要快速地替换文本中的一些词汇,又或者想把整个文本内容都进行替换。如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写
cat anaconda-ks.cfg | tr [a-z] [A-Z] |
wc命令
wc命令用于统计指定文本文件的行数 字数或字节数 word counts 语法
wc [参数] 文件名称 |
stat命令
stat命令用于查看文件的具体存储细节和时间等信息,英文全称为 status
stat [文件名称] |
文件有一个修改时间,Access Time 内容最后一次被访问的时间,Modigy Time 内容最后一次被修改的时间,简称为Mtime,以及Change Time 文件属性最后一次被修改时间
grep命令
grep命令用于按行提取文本内容,语法格式为
grep [参数] 文件名称 |
grep命令时用途最广泛的文本搜索匹配工具,grep最常用的两个参数
-n 用来显示搜索到的信息的行号 |
grep命令中的参数及其作用
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行。 |
cut命令
cut命令用于按列提取文本内容,语法格式为
cut [参数] 文件名称 |
diff命令
diff命令用于比较多个文件之间的内容的差异,英文是 different 语法
diff [参数] 文件名称A 文件名称B |
使用diff命令时,不经可以使用 –brief 参数来确定两个文件是否相同,还可以使用 -c 参数来详细比较出多个文件的差异之处
uniq命令
uniq命令用于去除文本中连续的重复行,英文 unique 语法
uniq [参数] 文件名称 |
sort命令
sort命令用于对文本内容进行在排序,语法格式
sort [参数] 文件名称 |
sort命令中的参数及其作用
参数 | 作用 |
---|---|
-f | 忽略大小写 |
-b | 忽略缩进与空格 |
-n | 以数值型排序 |
-r | 反向排序 |
-u | 去除重复行 |
-t | 指定间隔符 |
-k | 设置字段范围 |
文件目录管理命令
touch命令
touch命令用于创建空白文件或设置文件的时间,语法
touch [参数] 文件名称 |
在创建空白的文本文件方面,这个touch命令相当简洁
touch命令中的参数及其作用
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
mkdir 命令
mkdir命令用于创建空白的目录, 英文 make directory 语法
mkdir [参数] 目录名称 |
除了能创建单个空白目录,mkdir命令还可以结合-p参数来递归创建出具有嵌套层叠关系的文件目录
cp命令
cp命令用于复制文件或目录,英文copy,语法
cp [参数] 源文件名称 目标文件名称 |
复制的操作有三种情况
- 如果目标文件是目录,则会把源文件复制到该目录中
- 如果目标文件也是普通文件,则会询问是否要覆盖他
- 如果目标文件不存在,则执行正常的复制操作
要记住复制目录时要加上-r参数
cp命令中的参数及其作用
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
mv命令
mv命令用于剪切或者重命名文件,英文全称为 move 语法
mv [参数] 源文件名称 目标文件名称 |
剪切操作不同于复制操作,因为它默认会把源文件删除,只保留剪切后的文件.如果在同一个目录中将某个文件剪切后还粘贴到当前的目录下面,其实就是对该文件的重命名操作
rm命令
rm命令用于删除文件或者目录,英文全称为 remove 语法
rm [参数] 文件 名称 |
linux系统中删除文件是,系统会默认向您询问是否要执行删除操作,如果不想总是看见这种反复的确认信息,可以在rm命令后跟上 -f 参数来强制删除,另外想要删除一个目录,需要在rm命令后面加上一个-r参数才可以,否则删除不掉
rm命令中的参数及其作用
参数 | 作用 |
---|---|
-f | 强制执行 |
-i | 删除前询问 |
-r | 删除目录 |
-v | 显示过程 |
dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或者转换文件,语法
dd if=参数值 of=参数值 count=参数值 bs=参数值 |
dd命令中的参数及其作用
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
file命令
file命令用于查看文件的类型,语法
file 文件名称 |
在linux中,由于文本,目录,设备等所有这些一切都有统称为文件,但是他们不像win系统哪有带有后缀,因此难以通过文件名一眼看出具体的文件类型.这个时候就需要file命令来查看文件类型了
在win系统中打开文件时,一般都是通过用户双击鼠标来完成的,系统会自动判断用户双击的文件是什么类型,因此需要有后缀进行区别,而linux系统则是根据用户执行的命令来调用文件,例如执行cat命令查看文本,执行bash命令执行脚本等,所以也就不需要强制让用户给文件设置后缀了
tar命令
tar命令用于对文件进行打包压缩或者解压语法
tar 参数 文件名称 |
在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件的体积小,在网速相同的情况下,体积越小则传输的时间越短.在linux系统只不过,主要使用.tar .tar.gz 或者 .tar.bz2格式,这些格式大部分都是用tar命令生成的
tar命令中的参数及其作用
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
首先 -c 参数用于创建压缩文件, -x 参数用于解压文件 因此这两个参数不能同时使用, 其次, -z 参数指定使用 gzip 的格式来压缩或者解压文件 -j 参数指定使用bzip2格式来压缩或者解压问价.用户使用时则是根据文件的后缀来决定使用那种格式的参数来进行解压.在执行某些压缩或者解压缩操作时,可能需要花费数个小时,如果屏幕一直没有输出,您不好判断打包的进度情况,因此可以使用 -v 参数向用户不断显示压缩或者解压缩的过程 -C 参数用于指定要解压到那个指定的目录 -f 参数很重要,他必须放在参数的最后一位,代表要压缩或者解压缩的软件包的名称
压缩 tar -czvf 压缩包名称.tar.gz 要打包的目录 |