上一周学到了文件的基本权限管理;
本周接着文件管理的剩余部分学习,上周对于文件管理命令只简单地了解了创建文件touch、创建目录mkdir、以及mv、rm等;这周有扩展学习了其他的命令,以下作以分享;
一、文件管理命令
(一)、管道、输出重定向及输入重定向
管道命令|:通过它可以对数据进行连续处理;不过需要注意的是仅处理标准正确输出,对于标准错误输出数据会自动忽略;管道右边的命令还必须能够接受标准输入流命令才行,否则传递过程中数据会被抛弃;
经常作为接受数据管道的命令有:less、more、head、tail、cat;
如上图用管道搭配grep命令去过滤进程中的sshd服务进程;
1、输入、输出重定向(输出又分为标准输出和标准错误输出)
输入重定向:输入重定向是指使命令从指定的文件中读取输入数据,重定向的符号是“<"和"<<";
以下示例演示输入重定向:
输出重定向:将命令执行后的输出信息不在默认的屏幕上显示 , 而是以覆盖的方式写入到指定文件中, 若指定的文件不存在 , 则自动创建该文件。输出重定向的操作符是 ”> “和 “>>”;
若想file8.txt文件中的文件内容不被覆盖,则使用“>>”即将输出的内容追加到文件中;
如下:
标准错误输出:
当我们使用一个命令出现错误信息时,该错误信息都是默认出现在控制台上的;当我们在>前加上“2”会可以将信息重新输出到其他指定文件中,同样若是想将信息追加到文件下使用>>即可;如下图
以上介绍了标准输出和标准错误输出两种信息重定向,若是要把两种信息同时搭配调用,例如:将标准输出和标准错误输出同时重定向到不同文件中,又或者是将两种信息重定向到同一文件中的方法;方法如下:
将标准输出和标准错误输出重定向到不同的文件中则必须要使用两个重定向符号,并且需要加上相对应的描述符,例如:ll file8.txt abc >file9.txt 2>file10.txt ;【其中abc是不存在的文件】
将标准输出和标准错误输出重定向到同一个文件中的方法有以下4种格式:
1、ll file8.txt abc 2>>file9.txt 1>>file9.txt
2、使用&符也可以将两种信息重定向到同一文件中,“&>文件”与“>&文件”在这里是同一种意思,只是不同的写法而已;
cat file8.txt abc &>file9.txt
cat file8.txt abc >&file9.txt
3、还有第四种写法,ll file8.txt abc >file9.txt 2>&1,这种写法就是将标准错误输出重定向到与标准输出同一文件中;
(二)、打包、压缩、解压
tar:归档命令,把一系列文件归档到一个大文件中,也可以把档案文件恢复数据。目前tar命令可以通过压缩命令进行打包压缩
语法:tar 【参数】 打包的文件名 文件
tar 命令参数很特殊,其参数前面可以使用“-”,也可以不使用;
其常用的参数选项有以下:
-c :生成档案文件,创建打包文件
-v :显示进度,推荐不显示
-f :指定档案文件名称,后面一定是.tar文件,所以必须放选项最后边
-t :列出档案中包含的文件
-x :揭开档案文件
-C:指定解压到目标目录;
文件压缩解压的格式:gzip、bzip2、zip、xzip
gzip是应用最广泛的压缩命令,因其压缩速率快,但其压缩文件的大小却不是最小的;压缩文件的扩展名为.gz ,且gzip压缩文件并不会保留原文件;
语法:gzip 【选项】 dirname/filename
其选项参数如下:
-c :将解压缩的数据输出到屏幕上,可以通过数据流重定向来处理;
-d:解压缩的参数;
-t:可以检验一个压缩文件的一致性,看看压缩是否有错误
bzip2、xzip:与gzip的用法都是一样的,但是可以指定参数选项进行保留原始文件;
参数:-k——保留原始文件;
其上压缩文件的解压缩命令语法为:gzip -d 压缩文件名
最后一个是zip,其语法:zip 压缩文件名 【参数】 文件名
其参数选项有:
-r:压缩文件
-d:从压缩文件中指定删除文件
-q:压缩过程中不显示压缩过程信息
-u:用于更新现有的ZIP文件,将新的文件或更新后的文件归到ZIP存档中;
-f:用于刷新现有ZIP文件中的指定文件
-m:用于移动一个文件到压缩文件中,并在移动后将原文件删除
-e:用于对压缩文件加密
-z:用于对压缩文件添加注释
zip压缩文件的解压命令:unzip 【参数】
-l:用于显示压缩文件内所包含的文件
-t :用于检查压缩文件有没有出错
-n:解压缩时不要覆盖原有文件
-P:使用ZIP文件的密码
-d <目录>:指定文件解压缩后要存储的目录
打包压缩:
tar命令不止可以对文件进行打包,还可以是通过压缩命令的支持对文件进行压缩:
tar -czvf dirname.tar.gz dirname (gzip压缩)
tar -cjvf dirname.tar.bz2 dirname ( bzip2压缩)
tar -cJvf dirname.tar.xz dirname ( xzip压缩)
打包压缩后的解压缩命令为
tar -xzvf dirname.tar.gz (gizp解压缩)
tar -xjvf dirname.tar.bz2 (bzip2解压缩)
tar -xJvf dirname.tar.xz (xzip解压缩)
tar -xf dirname.tar.gz ————————这是一个通用的tar解压缩命令更为常用普遍
二、计划任务
是一种在特定时间或条件下执行特殊任务或程序的技术。通常是指操作系统提供的一种机制。允许用户在未来的特定时间或按照特定时间间隔完成的特定任务。这些任务可以是运行脚本、执行命令、启动程序等;
其又分为一次性调度执行和循环调度执行;
(一)、一次性调度执行
书面意思也就是只执行一次,通过at命令执行;
语法步骤:
at 时间;
输入要执行的任务;然后Ctrl+d保存并退出;或者Ctrl+c直接退出;
其选项参数有以下:
-d:任务编码,查看计划任务工作
-l:显示待执行的任务工作列表,显示信息为,任务编码,任务执行时间,任务发起的用户
-d +任务编码:删除指定任务编码的任务计划
-m:任务执行后给用户发邮件
at命令示例解释:
now +5min——5分钟后
teatime tomorrow (teatime is 16:00)——下午茶时间
noon + 4 days ——第四天中午
5pm august 3 2024 ——2024年8月3日下午五点
(二)、循环调度任务计划
cron的概念和crontab是不可分割的,crontab命令是通过crond守护进程来实现的,而crond服务又是通过crontab命令来进行的配置的;crond是服务名称,crontab是配置工具名称,用于设置周期性被执行的命令;
使用命令查看crond服务进程状态:
system status crond.server
ps aux | grep crond
以上两条命令显示crond服务是正常运行的;
crontab管理方式:
crontab -e :创建计划
crontab -; : 查看计划 (当然也可以使用-u username去查看其他用户的计划任务)
crontab -r:删除计划
计划任务的存储位置:每个用户都有自己的cron配置文件,并且都已各自的用户名命名;切换到/var/spool/cron/下查看其对应的配置文件,若是空的,则没有计划任务;
crontab 任务格式:时间 + 命令/脚本
* * * * * 命令/脚本
分、时、日、月、周————这是上一行五个*号所代表的意义
* :代表任何值
,:可以用逗号隔开的值,并指定一个列表范围如{1,3,5,7}
- :用-隔开的值表示取的一个整数范围;
/ :表示间隔频率,例如“*/5”表示每隔5分钟;
crontab一种是编辑普通的计划任务另一种是使用脚本文件执行复杂的任务;目前的进度我只介绍普通的任务编辑,进度赶上的时候回过头再单独写一篇补充的;
例如:crontab -e 命令编辑当前用户的计划任务;
三、进程管理(process)
进程是计算机中运行程序的实体,是程序的具体实现,当系统将程序调到内存以后,系统会分配给程序一定的资源(内存、设备等)是程序运行起来变成进程以供系统使用;进程可以单独执行,也可以与其他进程并发执行;
进程的状态:
R:表示进程正在运行,或者在队列中等待被调度;
S:处于可被唤醒的睡眠状态,进程在等待某些事件的发生,这些进程可以被异步信号唤醒;
D:不可中断的睡眠状态,表示进程在等待某些不可中断的事情的完成,这些进程不能被异步信号唤醒,同时也不能被kill命令杀死;
T:停止状态,表示进程被SIGSTOP信号暂停了执行,这些进程也可以被SIGSTOP信号恢复;
Z:僵死状态,表示进程已经退出,但父进程还没有回收他的资源,这些进程只占用一些进程表的空间,不占用其他资源。
X:死亡进程,表示进程已经被父进程回收,不再存在。这个状态只是一个临时的返回状态,很难被ps命令捕捉到;
(一)、ps命令
使用ps命令捕捉系统中的进程信息;常用的方式有三种:
ps -ef :查看所有进程信息
ps -aux:查看所有进程信息
ps -ef/aux | grep Tomact :指定查看进程信息
语法:ps 【参数】
-e:显示所有的进程信息,包括其他用的进程信息;
-f:显示进程的详细信息;
-u:显式指定用户的进程;
ps -ef
以上进程信息中,PID--每个进程在系统中都有一个唯一的进程ID,用于标识该进程。PID是一个非负整数;PPID--父进程;IDC--进程占用CPU的百分比;STIME--进程启动时间;TTY--进程在哪个终端运行;TIME--进程使用CPU的时间;CMD--调用进程的终端命令;
ps -aux
%MEM--进程占用物理内存的百分比;VSZ--进程占用虚拟内存的大小;RSS--进程占用物理内存的大小;STAT--进程的状态;START--进程启动的时间;
ps -ef | grep mysql(使用grep过滤查看指定进程信息)
(二)、top命令
top命令用于实时监控系统进程和系统资源的使用情况。它以交互的方式显示进程信息,并按照CPU或内存的使用率来进行排序。
在以上的信息中我们可以了解到:
当前时间为17:07:32,已经运行了7小时58分,两个登录用户,在过去的1,5,15分钟的平均负载为0.00,0.01,0.05;
当前共有107个进程,1个正在运行的进程,106个进程处于睡眠状态,0个停止的进程,0个僵死的进程;
CPU的使用率为0.0%的用户空间,0.2%的系统空间,0.0%的nice值,99.8%的空闲,0.0%的等待I/O,0.0%的硬中断,0.0%的软中断;
内存为3861288MiB总内存,3091852MiB的空闲内存,411308MiB一使用的内存,358128MiB的缓存和缓冲区使用情况;
交换空间情况为2097148MiB的总交换空间,2097148MiB的空闲交换空间,没有使用的交换空间,3220360MiB的可用内存
进程列表信息为:
PR--进程优先级,数值越小则优先级越高;NI--表示进程的优先级调整值,负数表示较高的优先级,整数表示较低的优先级;VIRT--进程使用的虚拟内存的大小;RES--进程使用的物理内存大小;SHR--进程占用的物理内存大小;
(三)、pstree查看进程树
部分系统可能没有进程树服务,可以使用命令下载“yum -y install psmisc;就可以通过pstree以树形状显示系统进程及子进程;
使用进程树命令时也可以加选项参数,如下:
-a:显示命令行参数
-p:显示每个进程的pid
-c:显示进程的完整命令行
-l:使用长格式输入
(四)、htop--交互式系统监控工具
语法:htop 【选项】
-d:设置刷新间隔的延迟时间;
-u:监控指定用户的进程;
-p:监控指定的进程;
-s:只当排序依据;例用PCU占比进行排序
(五)、kill命令
kill命令发送指定的信号到相应进程。不明确指定信号的话将默认kill(15)终止指定进程。如果任务无法终止,则可以使用kill -s 9 强制结束进程;
kill命令的参数选项:
-l:若不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a:当处理当前进程时,不限制命令和进程号的对应关系
-p:指定kill命令值打印相关的进程号,而不发送任何信号
-s:指定发送信号
-u:指定用户
kill命令的几种用法:
默认不指定信号杀死进程——kill PID
强制杀死进程——kill -KILL PID或者kill -9 PID
正常停止进程——kill -15 PID
显示所有信号信息——kill -l
这里再补充几个kill命令的扩展用法:
当我们使用kill命令杀死进程首先要查询进程的PID号,日常的查询都是ps -ef或者ps aux进行查询,但是进程信息内容过于庞大,所以我们都会借助管道“ps -ef | grep 进程名”进行具体查询;
我们还可以使用pgrep命令查询指定的进程PID,语法:pgrep 进程名;
或者使用“pidof 进程名”,两者命令效果相同,但不同的是pidof 进程名必须给出的是指定进程的全名;
附上kill常用的指定信号有:
1——终端断线;
2——中断(同Ctrl+C);
3——退出(同Ctrl+、);
15——终止;
9——强制结束;
18——回复进程;
19——暂停进程;
(六)、systemctl服务管理
systemctl是linux系统中用于管理系统服务的命令行工具。systemctl命令的功能包括查询和发送相应的控制命令给systemd、管理unti以及启动或禁止相应的服务等;
1、命令语法:systemctl 【选项参数】 command 【unti】“unti”是可选参数,用于指定要操作的服务或单元;
2、常用的选项有以下:
-H:指定要再远程主机上运行的systemd实例的主机名和ip地址
-a:显示所有已加载的单位,而不仅仅是当前的单位
-t:根据指定的单元类型筛选单元列表,支持的单元类型包括service、socket、mount等
-u:执行与当前用户相关联的用户及服务
3、systemctl常用操作命令有
停止服务——systemctl stop
启动服务——systemctl start
查看服务状态——systemctl status
重启服务——systemctl restart
重新加载指定的单位——systemcltl reload
设定指定服务的开机自启动——systemctl enable
设置指定单位在系统开机时不自启动——systemctl disable
总结:本周的学习内容,基础命令知识分享到这;后边是一些小网页的部署作业;我会总结一下想办法整理成笔记分享出来;
可能写的不够全面、仔细、透彻,但我会一周比一周完善。