COLT_CMDB_linux_userInfo_20250508.sh修复历史脚本输出指标信息中userName与输出信息不一致问题

#!/bin/bash
#IT_BEGIN
#IT_TYPE=3
#IT SYSTEM_LINUX_AGENTUSERDISCOVER|discovery.user[disc]
#原型指标
#IT_RULE SYSTEM_LINUX_AGENTUSERGROUPID|groupId[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERHOME|userHome[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERNAME|userName[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERID|userId[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERIP|ipAddress[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERPATH|shell[{#USERNAME}]
#IT_END
if [ "$1" == "disc" ];thenusers=(`compgen -u| tr '\n' ' '`)for user in ${users[@]}doecho "{#USERNAME}="$userdoneexit 0
fi#原型指标采集
shname=`basename $0`
ATTR="_X(g=$shname,p=CMDB,t=script,f=0)"
ip=`ifconfig -a | grep inet |grep -v 127.0.0.1 |grep -v inet6 |awk '{print $2}' |cut -d ':' -f 2 | tr "\n" "," |sed 's/.$//g'`
#USERNAME=$1
#多指标输出开始
echo COL_DETAIL_START:
cat  /etc/passwd | while read line
doUSERNAME=`echo $line | cut -d':' -f 1`userName=`echo $line | cut -d':' -f 1`userId=`echo $line | cut -d':' -f 3`groupId=`echo $line | cut -d':' -f 4`userHome=`echo $line | cut -d':' -f 6`shell=`echo $line | cut -d':' -f 7`echo "ipAddress[$ATTR,$USERNAME]|+|$ip"echo "userName[$ATTR,$USERNAME]|+|$userName"echo "userId[$ATTR,$USERNAME]|+|$userId"echo "groupId[$ATTR,$USERNAME]|+|$groupId"echo "userHome[$ATTR,$USERNAME]|+|$userHome"echo "shell[$ATTR,$USERNAME]|+|$shell"
done
#多指标输出结束
echo COL_DETAIL_END:

10.14.1.69服务器执行脚本如下:

[root@localhost ~]# sh COLT_CMDB_linux_userInfo_20250508.sh 
COL_DETAIL_START:
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|root
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|0
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|/root
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|/bin/bash
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|bin
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|1
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|1
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|/bin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|daemon
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|2
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|2
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|adm
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|3
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|4
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|/var/adm
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|lp
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|4
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|7
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|/var/spool/lpd
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|sync
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|5
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|/bin/sync
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|shutdown
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|6
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|/sbin/shutdown
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|halt
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|7
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|/sbin/halt
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|mail
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|8
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|12
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|/var/spool/mail
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|operator
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|11
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|/root
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|games
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|12
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|100
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|/usr/games
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|ftp
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|14
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|50
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|/var/ftp
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|nobody
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|99
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|99
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|systemd-network
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|192
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|192
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|dbus
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|81
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|81
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|polkitd
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|999
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|998
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|sshd
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|74
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|74
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|/var/empty/sshd
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|postfix
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|89
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|89
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|/var/spool/postfix
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|chrony
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|998
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|996
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|/var/lib/chrony
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|/sbin/nologin
COL_DETAIL_END:

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

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

相关文章

TCP 与 UDP报文

** TCP 与 UDP报文** 1. 引言 在网络通信中,TCP(传输控制协议) 和 UDP(用户数据报协议) 是两种最核心的传输层协议。它们各自适用于不同的场景,理解其工作原理对开发高性能网络应用至关重要。本文将详细解…

LabVIEW燃气轮机测控系统

在能源需求不断增长以及生态环境保护备受重视的背景下,微型燃气轮机凭借其在经济性、可靠性、维护性及排放性等方面的显著优势,在航空航天、分布式发电等众多领域得到广泛应用。随着计算机技术的快速发展,虚拟仪器应运而生,LabVIE…

基于vueflow可拖拽元素的示例(基于官网示例的单文件示例)

效果图 代码 <template><div style"width: 100%;height: calc(100vh - 84px)"><VueFlow :nodes"nodes" :edges"edges" drop"onDrop" dragover"onDragOver" dragleave"onDragLeave"><div cl…

笔试专题(十六)

文章目录 相差不超过k的最多数题解代码 最长公共子序列&#xff08;一&#xff09;题解代码 小红的口罩题解代码 春游题解代码 相差不超过k的最多数 题目链接 题解 1. 排序 滑动窗口 2. 为什么使用滑动窗口&#xff1f; 因为max-min < k&#xff0c;求这个区间内的数最…

技术视界 | 青龙机器人训练地形详解(三):复杂地形精讲之台阶

在前两篇中&#xff0c;我们依次讲解了“如何创建一个地形”以及“如何将地形添加到训练环境中”。从基础出发&#xff0c;逐步构建机器人可交互的三维仿真环境。在机器人强化学习训练中&#xff0c;地形的复杂度决定了策略的泛化能力&#xff0c;仅靠 jump_plat 和 jump_pit 等…

MYSQL之索引结构,为何要用B+树

索引的目的就是为了提高查询效率 索引的结构是B树&#xff0c;那么说到B树&#xff0c;必须提一下其他三种结构&#xff0c;分别是&#xff1a;二叉查找树、平衡二叉树、B树 我们来看看各自的结构特征 二叉查找树 特点:任何节点的左子节点的值都小于当前节点的值&#xff0c;右…

3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()

在本节课中&#xff0c;我们深入学习了Spark RDD的过滤算子filter()。filter()算子能够通过指定的函数对RDD中的元素进行筛选&#xff0c;返回一个满足条件的新RDD&#xff0c;通常新RDD的元素个数会比源RDD少。通过案例演示&#xff0c;我们掌握了如何使用filter()来过滤列表中…

vue3使用轮播图组件swiper

一、在swiper的官网源码下载地址 下载Swiper - Swiper中文网 二、官网浏览轮播图类型地址 Swiper演示 - Swiper中文网 三、swiper配置参数地址 中文api - Swiper中文网 四、在vue3项目引入swiper npm install swiper 五、在vue3中使用 官网vue3中使用&#xff1a;Swiper…

MySQL优化-MySQL故障排查与监控

MySQL优化-MySQL故障排查与监控 一、MySQL监控 实时了解数据库的运行状态&#xff0c;通过不同的监控指标&#xff0c;识别潜在问题并进行预防。常见得到MySQL监控指标包括&#xff1a;连接数、缓存池命中率、磁盘I/O、查询执行情况等。 1、监控数据库状态变量 MySQL的状态…

【MongoDB篇】MongoDB的分片操作!

目录 引言第一节&#xff1a;分片核心概念&#xff1a;为什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二节&#xff1a;分片架构的“三大金刚”&#xff1a;核心组件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;️第三节&#xff…

C++ 函数类型及实用例题

请各位大佬一键三连支持一下 目录 请各位大佬一键三连支持一下 1. 无参数无返回值函数 2. 有参数无返回值函数 3. 无参数有返回值函数 4. 有参数有返回值函数 5. 函数重载 6. 递归函数 7. 带默认参数的函数 8. 内联函数 下面我将介绍 C 中不同类型的函数&#xff0c;…

AtCoder Beginner Contest 404 A-E 题解

还是ABC好打~比ARC好打多了&#xff08; 题解部分 A - Not Found 给定你一个长度最大25的字符串&#xff0c;任意输出一个未出现过的小写字母 签到题&#xff0c;map或者数组下标查询一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…

trae ai编程工具

Trae&#xff0c;致力于成为真正的 AI 工程师&#xff08;The Real Al Engineer&#xff09;。Trae 旗下的 AI IDE 产品&#xff0c;以智能生产力为核心&#xff0c;无缝融入你的开发流程&#xff0c;与你默契配合&#xff0c;更高质量、高效率完成每一个任务。 版本差异 国内…

Web 架构之前后端分离

文章目录 思维导图一、引言二、前后端分离的概念代码示例&#xff08;简单的前后端分离交互&#xff09;后端&#xff08;使用 Python Flask 框架&#xff09;前端&#xff08;使用 JavaScript 和 jQuery&#xff09; 三、前后端分离的优势3.1 提高开发效率3.2 代码可维护性增强…

理解 Elasticsearch 的评分机制和 Explain API

作者&#xff1a;来自 Elastic Kofi Bartlett 深入了解 Elasticsearch 的评分机制并探索 Explain API。 想获得 Elastic 认证吗&#xff1f;查看下一期 Elasticsearch Engineer 培训的时间&#xff01; Elasticsearch 拥有大量新功能&#xff0c;帮助你为你的使用场景构建最佳…

Jupyter Notebook / Lab 疑难杂症记:从命令找不到到环境冲突与网络阻塞的排查实录

Jupyter Notebook / Lab 疑难杂症记&#xff1a;从命令找不到到环境冲突与网络阻塞的排查实录 摘要&#xff1a; 本文记录了一次复杂的 Jupyter Notebook / Lab 故障排查过程。从最初的“command not found”错误出发&#xff0c;我们深入挖掘了可执行文件存在的矛盾、conda 环…

C++之set和map的运用

目录 序列式容器和关联式容器 熟识set 在STL中的底层结构&#xff1a; set的构造和迭代器 set的增删查 multiset和set的差异 练习题&#xff1a; 熟识map map类的介绍 pair类型介绍 map的构造 map的增删查 map的数据修改 测试样例&#xff1a; multimap和map的差…

【Bluedroid】蓝牙 SDP(服务发现协议)模块代码解析与流程梳理

本文深入剖析Bluedroid蓝牙协议栈中 SDP&#xff08;服务发现协议&#xff09;服务记录的全生命周期管理流程&#xff0c;涵盖初始化、记录创建、服务搜索、记录删除等核心环节。通过解析代码逻辑与数据结构&#xff0c;揭示各模块间的协作机制&#xff0c;包括线程安全设计、回…

【实战项目】简易版的 QQ 音乐:一

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能自我实现简易版的 QQ 音乐。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a…

Linux_进程退出与进程等待

一、进程退出 ‌退出场景‌ ‌正常终止‌&#xff1a;代码执行完毕且结果符合预期&#xff08;退出码为 0&#xff09;。‌异常终止‌&#xff1a;运行结果错误&#xff08;退出码非 0&#xff09;或进程被信号强制终止。&#xff08;如 SIGINT 或 SIGSEGV&#xff09;。 ‌退…