《Linux Shell脚本攻略》学习笔记-第十章

news2024/11/25 20:50:58

10.1

 

Linux的生态系统由网络、硬件、负责分配资源的操作系统内核、接口模块、系统实用工具以及用户程序所组成的。

10.2

运行在计算机中的多个进程都被分配了一个被称为进程ID的唯一标识数字。进程属性包括拥有该进程的用户、进程使用的内存数量、进程占用的CPU时间。

ps命令默认只显示从当前终端所启动的进程。第一列是PID,第二列是TTY,第三列是进程的运行时长,最后一列是CMD。

选项-f可以显示多列信息:

选项-e和-ax能够输出系统中运行的所有进程信息:

选项-o可以指定显示哪些数据:

ps命令通常并不会显示进程的环境信息,输出修饰符e可以将其添加到命令尾部

在ps命令的尾部加上f就可以创建进程的树状视图,显示出任务之间的父子关系

ps命令的输出默认是没有经过排序的。选项--sort可以强制ps对输出排序,参数前的+表示升序,-表示降序。

通过检查每一条输出是否属于参数列表中指定的有效用户或者真是用户,ps能够过滤输出。

ps -u user:指定有效用户列表

ps -U user:指定真实用户列表

选项-t可以指定TTY列表

选项-L可以显示出线程的相关信息。该选项会在输出中添加一列LWP。如果再加上选项-f(-LF),就会多显示出两列:NLWP和LWP

如果在pid的后面加上=,这会去掉ps输出中PID一列的列名。

选项-d可以用来指定其他的输出分隔符:

选项-c可以返回匹配的进程数量:

-u可以过滤用户:

uptime和top命令都可以显示出平均负载。平均负载由3个值来指定,第一个值指明了一分钟内的平均值,第二个值指明了五分钟内的平均值,第三个值指明了十五分钟内的平均值。

10.3  which、whereis、whatis与file

10.4 杀死进程以及发送和响应信号

作为一种进程间的通信机制,信号可以中断进程运行并强迫进程执行某些操作。

信号能够中断正在运行的程序。当进程接收到一个信号时,它会执行对应的信号处理程序作为响应。

kill命令以进程ID作为参数。killall命令可以通过名字来终止进程。

10.5 向用户终端发送信息

write命令可以向一个用户发送信息,talk命令可以让两个用户展开会话,wall命令可以向所有用户发送消息。

如果用户多次登录,你可能需要指定要将消息发送哪个终端。

who命令可以确定用户的终端:

第二列pts就是用户终端的名称。

方式一:

方式二:

wall命令会向所有的用户及终端广播信息

10.6 /proc文件系统

/proc是一种存在于内存中的伪文件系统,其中包含了多个文件和目录。系统中每一个运行的进程在/proc中都有一个对应的目录,目录名和进程ID相同。

10.7 收集系统信息

10.8 使用cron进行调度

Linux系统中包含了多种任务调度的工具,其中cron的应用最为广泛。它允许任务能够按照固定的时间间隔在系统后台自动运行。cron使用了一个表,表中保存了需要执行的一系列脚本或命令以及执行时间。

每个用户都有自己的cron表,这其实是一个纯文本文件。crontab命令用于处理cron

分钟0-59

小时0-23

天1-31

月份1-12

星期中的某天0-6

命令(在指定时间执行的脚本或命令)

前五个字段指定了命令开始执行的时间。多个值之间用逗号分隔。信号表示任意时间段。除号表示调度的时间间隔。

执行该脚本时需要提前给脚本文件授权。

查看指定用户的cron表,必须以root用户的身份使用该选项

删除当前用户的cron表

删除指定用户的cron表

10.12 用户管理脚本

#!/bin/bash

#Description: A user administration tool

function usage()

{

 echo Usage:

 echo Add a new user

 echo $0 -adduser username password

 echo

 echo Remove an existing user

 echo $0 -deluser username

 echo

 echo Set the default shell for the user

 echo $0 -shell username SHELL_PATH

 echo

 echo Suspend a user account

 echo $0 -disable username

 echo

 echo Enable a suspended user account

 echo $0 -enable username

 echo

 echo Set expiry date for user account

 echo $0 -expiry DATE

echo

 echo Change password for user account

 echo $0 -passwd username

 echo

 echo Create a new user group

 echo $0 -newgroup groupname

 echo

 echo Remove an existing user group

 echo $0 -delgroup groupname

 echo

 echo Add a user to a group

 echo $0 -addgroup username groupname

 echo

 echo Show details about a user

 echo $0 -details username

 echo

 echo Show usage

 echo $0 -usage

 echo

 exit

}

if [ $UID -ne 0 ];

then

 echo Run $0 as root.

 exit 2

fi

case $1 in

 -adduser) [ $# -ne 3 ] && usage ; useradd $2 -p $3 -m ;;

-deluser) [ $# -ne 2 ] && usage ; deluser $2 --remove-all-files;;

 -shell) [ $# -ne 3 ] && usage ; chsh $2 -s $3 ;;

 -disable) [ $# -ne 2 ] && usage ; usermod -L $2 ;;

 -enable) [ $# -ne 2 ] && usage ; usermod -U $2 ;;

 -expiry) [ $# -ne 3 ] && usage ; chage $2 -E $3 ;;

 -passwd) [ $# -ne 2 ] && usage ; passwd $2 ;;

 -newgroup) [ $# -ne 2 ] && usage ; addgroup $2 ;;

 -delgroup) [ $# -ne 2 ] && usage ; delgroup $2 ;;

 -addgroup) [ $# -ne 3 ] && usage ; addgroup $2 $3 ;;

 -details) [ $# -ne 2 ] && usage ; finger $2 ; chage -l $2 ;;

 -usage) usage ;;

 *) usage ;;

esac

该脚本有效的命令选项包括:

  • 查看当前用户的cron表
  • 实际效果
  • crontab -e命令用于编辑cron表
  • cron表中的每一行均由6个字段组成,字段之间以空格分隔并按照一下顺序排列:
  • lshw和dmidecode可以生成有关系统的一份详细的报告
  • 磁盘分区信息
  • 内存的相关信息
  • CPU的详细信息
  • hostname与uname命令
  • 向所有用户发送信息
  • 同其他用户展开会话
  • write可以向单个用户发送信息
  • 如果需要在杀死进程前进行确认,可以使用killall的-I选项
  • 选项-u可以指定进程所属用户
  • 选项-9可以依照名字强行杀死进程
  • 选项-s可以指定要发送的信号
  • killall命令
  • 我们经常需要强行杀死仅,这样做的时候要小心。这种做法会立即生效,根本没有机会保存或执行通常的清理工作。
  • 选项-s可以指定发送给进程的信号
  • 终止进程
  • kill -l命令可以列出所有可用的信号
  • which命令可以用来找出某个命令的位置
  • whereismingl与which命令类似,它不仅会返回命令的路径,还能够打印出其对应的命令手册以及源代码的路径
  • whatis会输出指定命令的一行简短描述
  • file命令可以用来确定文件的类型
  • top命令会列出CPU占用最高的进程列表以及基本的系统统计信息,其中包括总的任务数、CPU核心数以及内存占用情况。
  • 确定系统的繁忙程度
  • pgrep命令也可以列出命令的进程ID列表
  • 找出特定命令对应的进程ID
  • -f:显示完整格式

    -l:长格式列表

  • 进程线程的相关信息
  • 用TTY过滤ps输出
  • 根据真实用户ID以及有效用户ID过滤ps输出
  • 对ps输出进行排序
  • 创建进程树状视图
  • 显示进程的环境变量
  • ps可以报告活跃进程的相关信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拉伯证券|年内第二大解禁周来袭

Wind数据显现,除掉新上市公司,本周A股共有54家公司限售股解禁,解禁数量270.57亿股,以最新收盘价计算(下同),解禁市值1752.90亿元,为年内第二大解禁周。 本周解禁市值超越10亿元的公司…

YOLOv8代码上线,官方宣布将发布论文,附精度速度初探和对比总结

【YOLOv8 注意事项】 1. YOLOv8 的官方仓库和代码已上线,文档教程网址也刚刚更新。 2. YOLOv8 代码集成在 ultralytics 项目中,目前看不会再单独创建叫做 YOLOv8 的项目。 3. YOLOv8 即将有论文了!要知道 YOLOv5 自从 2020 年发布以来&…

阿里云服务器安装图形界面

为了自动化流程安装图形界面,我的服务器是Centos7 1、yum安装gnome图形界面 yum groupinstall “GNOME Desktop” -y 2、安装远程桌面服务端 yum -y install tigervnc-server -y 3、启动远程桌面服务端(将桌面服务绑定到5903端口) vncserver :3 4、阿里控制台放开59…

SpringBoot+VUE前后端分离项目学习笔记 - 【23 权限菜单 续】

BUG1 : 路由跳转问题 访问错误路由: 已登录用户返回404,未登录用户返回登录页面 Route/index.js 路由守卫增加判断 router.beforeEach((to, from, next) > {localStorage.setItem("currentPathName", to.name) // 设置当前的路由名称s…

【墙角数枝梅,凌寒独自开】代码改变未来

墙角数枝梅,凌寒独自开 “墙角数枝梅,凌寒独自开。” 出自王安石的《梅花》 诗句是集语言中的精华,浓缩为七言、五言和四言等,寥寥几句道尽人生酸甜苦辣,儿女情长。 而我更愿把现代的程序员称作诗人,语言是…

ESP32设备驱动-TCS34725颜色传感器驱动

TCS34725颜色传感器驱动 文章目录 TCS34725颜色传感器驱动1、TCS34725介绍2、硬件准备3、软件准备4、驱动实现1、TCS34725介绍 TCS3472 器件提供红色、绿色、蓝色 (RGB) 和清晰光感应值的数字返回。 集成在芯片上并定位于颜色传感光电二极管的 IR 阻挡滤光片可最大限度地减少入…

并发场景使用SimpleDateFormat异常问题和解决

SimpleDateFormat类主要是负责日期的格式化与转换操作,因为它不是线程安全的,所以使用SimpleDateFormat时,务必确保同一个SimpleDateFormat对象不要与其他线程共享,否则并发情况下会出现问题 目录异常示例解决方案1:创…

Camera | 2.MIPI、CSI基础

瑞芯微专栏 上一篇我们讲解了camera的一些基础概念和知识。 我们说了,现在的手机由于高分辨率的要求,现在基本上都是基于MIPI、CSI协议来实现的, 本篇讲解MIPI、CSI的一些基础知识。 摄像头常用术语 下面这些术语是camera驱动中经常用到的…

9.6 容器适配器

文章目录定义一个适配器stack队列适配器queuepriority_queue 优先队列适配器是标准库的一个通用概念,容器、迭代器和函数等都有适配器。适配器是一种机制,接受一种已有容器类型。标准库有三个顺序容器适配器:stack,queue和priorit…

Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

在本文中,我们将讨论如何在 Python 中使用 Elasticsearch。 如果你还不了解 Elasticsearch,可以阅读这篇文章 “Elasticsearch 简介” 进行快速介绍。在我之前的文章 “Elasticsearch:使用最新的 Python client 8.0 来创建索引并搜索”&#…

Pytorch自定义数据集模型训练流程

文章目录Pytorch模型自定义数据集训练流程1、任务描述2、导入各种需要用到的包3、分割数据集4、将数据转成pytorch标准的DataLoader输入格式5、导入预训练模型,并修改分类层6、开始模型训练7、利用训好的模型做预测Pytorch模型自定义数据集训练流程 我们以kaggle竞…

响应式流的核心机制——背压机制

一、响应式流是什么? Reactive Streams 是 2013 年底由 Netflix、Lightbend 和 Pivotal(Spring 背后的公司)的工程师发起的一项计划,响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从…

【BP靶场portswigger-客户端14】点击劫持-5个实验(全)

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

Fastdfs分布式文件系统原理浅析

文章目录1、fastdfs文件系统原理简述2、storage server状态2.1 组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下:第一步:第二步:第三步:第四步:3、同步时间管理4、B…

[有人@你]请查收你的年终总结报告

嗨,兄dei,我是建模助手。 新年伊始,最近大家想必已经被各大平台的2022年度报告刷屏了。 听歌软件伴你度过的失眠夜,外卖软件拯救你的饥饿时刻,还有某俩宝账单告诉你,其实你是有钱的,只是你看不到…

基于有向图的邻接矩阵计算其割点、割边、压缩图,并用networkx可视化绘制

基于有向图的邻接矩阵计算其割点、割边、压缩图,并用networkx可视化绘制为什么基于邻接矩阵计算图的割点、割边、压缩图实现python代码代码运行效果结论:为什么基于邻接矩阵计算图的割点、割边、压缩图 由于矩阵计算过程,被广泛优化&#xf…

Linux关于 gdb 调试器的使用

坚持看完,结尾有思维导图总结 这里写目录标题debug 和 release 版本gdb 常见命令断点逐行调试和观察变量总结debug 和 release 版本 首先要说的是 ,在 Linux 中 gcc 直接编译是不能进行调试的 而是要在加上 -g 选项才能得到可调试的文件 以下程序用一个…

算法第十二期——BFS-双向广搜

双向广搜 应用场景:有确定的起点s和终点t;把从起点到终点的单向搜索,变换为分别从起点出发和从终点出发的“相遇”问题。操作:从起点s(正向搜索)和终点t(逆向搜索)同时开始搜索,当两个搜索产生…

Spring入门-Spring事务管理

文章目录1,Spring事务管理1.1 Spring事务简介1.1.1 相关概念介绍1.1.2 转账案例-需求分析1.1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步…

数据治理与档案信息资源体系建设

如果要评选大数据或者数字化转型领域中哪个词最让人费解、最讲不清楚,“数据治理(Data Governance)”绝对是候选之一。说实话,笔者到现在也没有完全整明白,因为数据治理包含的范围太广了,可以说是包罗万象&…