在Linux系统中,“服务序列号”这一表述可能指向不同层面的信息,具体取决于实际需求:可能是系统服务的唯一标识(如systemd服务的Unit名称或ID)、第三方软件服务的许可证序列号,或与硬件绑定的服务序列号(如基于硬件ID的软件许可),本文将围绕这三种常见场景,详细说明在Linux中如何查看相关信息,并提供具体命令、示例及注意事项。

系统服务的标识信息查看(Unit名称与ID)
Linux中的系统服务通常由systemd管理,每个服务都有一个唯一的“标识”,即Unit文件名(通常以.service结尾),这可以理解为系统层面的“服务序列号”,通过以下方法可查看这些标识信息:
列出所有已加载的Unit服务
使用systemctl list-units命令可查看当前系统已加载(正在运行或已加载但未运行)的服务Unit名称,结合--type=service参数可过滤出服务类型:
systemctl list-units --type=service --no-pager
输出示例包含以下列:
- UNIT:服务Unit名称(如
nginx.service、sshd.service),即服务的核心标识; - LOAD:Unit是否已加载(loaded/unloaded);
- ACTIVE:当前激活状态(active/inactive);
- SUB:子状态(如running, dead);
- DESCRIPTION:服务描述信息。
若需查看所有服务(包括未加载的),可添加--all参数:
systemctl list-units --type=service --all --no-pager
查看服务Unit文件的详细信息
每个服务的Unit文件(通常位于/usr/lib/systemd/system/或/etc/systemd/system/)包含服务的配置信息,文件名即服务标识,通过systemctl cat可查看Unit文件内容:
systemctl cat nginx.service
输出示例:
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
其中[Unit]部分的Description字段描述服务功能,而文件名nginx.service就是服务的唯一标识。
查看服务的启停状态与依赖关系
通过systemctl status可查看服务的详细状态,包括Unit名称、运行状态、进程ID(PID)及日志信息:
systemctl status sshd.service
输出示例:
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-01 08:30:15 CST; 5 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1234 (sshd)
Tasks: 1 (limit: 1137)
Memory: 1.2M
CGroup: /system.slice/sshd.service
└─1234 /usr/sbin/sshd -D
其中Loaded行显示Unit文件的完整路径,Active行显示运行状态,这些均可作为服务的“标识信息”。
兼容旧系统的service命令
对于较旧的Linux系统(仍使用init.d管理服务),可通过service命令查看服务状态,服务名即为标识:
service --status-all
输出示例(表示运行中,表示未运行):
acpid is running
alsa-utils is running
+ apache2 is running
+ cron is running
dbus is running
...
其中apache2等服务名即为服务的标识。
第三方软件服务的序列号查看(许可证序列号)
若“服务序列号”指第三方软件(如数据库、中间件)的许可证序列号,需根据具体软件的工具或配置文件查看,以下是常见场景的示例:
数据库服务序列号
-
MySQL/MariaDB:
通过配置文件或系统变量查看序列号(如server-uuid或许可证信息),登录数据库后执行:
SHOW VARIABLES LIKE 'server_uuid';
输出示例:
+---------------+--------------------------------------+ | Variable_name | Value | +---------------+--------------------------------------+ | server_uuid | 12345678-1234-5678-1234-567891234567 | +---------------+--------------------------------------+若为商业版MySQL,可通过
mysqladmin或企业版工具查看许可证序列号。 -
PostgreSQL:
数据目录下的global/pg_control文件包含集群标识符(Data ID),可通过pg_controldata查看:sudo -u postgres pg_controldata /var/lib/pgsql/data/
输出示例:
Database cluster state: in production pg_control version number: 1301 Catalog version number: 202111211 Database system identifier: 6789abcd1234abcd5678abcd12345678 ...其中
Database system identifier可视为集群的唯一标识。
Web服务序列号
-
Nginx:
编译时可通过nginx -V查看版本及配置参数,若序列号编译在模块中,需查看配置文件或编译日志:nginx -V
输出示例:
nginx version: nginx/1.18.0 (Ubuntu) built with OpenSSL 1.1.1f 31 Mar 2020 ...商业版Nginx Plus可通过
nginx -V查看序列号(需购买后授权)。 -
Apache HTTP Server:
通过apache2ctl -V查看编译信息,序列号可能存在于配置文件或模块中:apache2ctl -V
输出示例:
Server version: Apache/2.4.41 (Ubuntu) Server built: ...
商业软件序列号(如WebLogic、JBoss)
商业软件通常将序列号存储在安装目录的配置文件或特定命令中,以WebLogic为例:
- 查看安装目录下的
config.xml文件(需解压许可证文件); - 使用
WLST(WebLogic Scripting Tool)连接管理服务器,执行getLicense()命令获取序列号。
常见第三方服务序列号查看方法总结
| 软件类型 | 常用命令/方法 | 输出示例(序列号相关信息) |
|---|---|---|
| MySQL/MariaDB | SHOW VARIABLES LIKE 'server_uuid'; |
12345678-1234-5678-1234-567891234567 |
| PostgreSQL | pg_controldata |
6789abcd1234abcd5678abcd12345678 |
| Nginx Plus | nginx -V |
Serial: ABCDEF123456(商业版输出) |
| Apache | apache2ctl -V |
(开源版无序列号,商业版可能包含) |
| Oracle | SELECT * FROM v$license; |
许可证容量、许可证类型等 |
硬件相关序列号查看(服务依赖硬件时)
若服务序列号与硬件绑定(如基于主板ID的软件许可),可通过以下命令查看硬件序列号:
dmidecode:查看硬件详细信息
dmidecode命令读取系统管理中断(SMI)数据,可获取主板、CPU、内存等硬件序列号(需root权限):
sudo dmidecode -t system
输出示例:
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: Latitude 5490
Version: 1.0
Serial Number: ABC123456789
UUID: 12345678-1234-5678-1234-567891234567
Wake-up Type: Power Switch
SKU: N/A
Family: Latitude
其中Serial Number为硬件序列号,部分软件服务可能基于此生成许可。

查看主板/CPU序列号
-
主板序列号:
sudo dmidecode -t baseboard
输出包含
Manufacturer、Serial Number等信息。 -
CPU序列号:
sudo dmidecode -t processor
输出示例:
Handle 0x0002, DMI type 4, 52 bytes Processor Information Socket Designation: CPU 1 Type: Central Processor Family: Core i7 Manufacturer: Intel(R) Corporation ID: BFEBFBFF000906EA Serial Number: BFEBFBFF000906EA(部分CPU无独立序列号,使用ID代替)
通过/sys文件系统查看硬件信息
Linux的/sys文件系统存储了硬件设备信息,可通过以下命令查看:
-
磁盘序列号:
sudo hdparm -i /dev/sda | grep "SerialNo"
或:
cat /sys/block/sda/device/serial
-
网卡MAC地址(硬件标识):
ip link show
输出示例:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff其中
link/ether后的MAC地址可作为硬件标识。
注意事项
- 权限问题:
部分命令(如dmidecode、查看系统服务文件)需要root权限,需使用sudo执行。 - 服务序列号与标识的区别:
- 系统服务标识(如
nginx.service)是systemd管理的Unit名称,用于服务控制; - 第三方软件序列号是软件许可证的唯一码,需通过软件特定工具查看;
- 硬件序列号是物理设备的标识,可能作为软件许可的绑定依据。
- 系统服务标识(如
- 日志与配置文件:
若序列号未通过命令直接输出,可尝试查看服务的日志文件(如/var/log/目录)或配置文件(如/etc/软件名/)。 - 商业软件支持:
商业软件的序列号查看需参考官方文档,部分软件需联系厂商获取授权信息。
相关问答FAQs
问题1:为什么使用systemctl list-units看不到所有服务?
答:systemctl list-units默认只显示已加载(loaded)的服务,包括正在运行(active)或已停止(inactive)但已加载的Unit,若需查看所有服务(包括未加载的),需添加--all参数,即systemctl list-units --type=service --all,服务未启动且未设置为开机自启时,可能不会自动加载,此时可通过systemctl list-unit-files查看所有Unit文件及其启用状态。
问题2:如何查看商业软件(如Oracle Database)的序列号?
答:商业软件的序列号通常存储在特定视图或配置文件中,以Oracle Database为例,可使用SQL*Plus连接数据库后查询PRODUCT_COMPONENT_VERSION视图或LICENSE表:
SELECT * FROM PRODUCT_COMPONENT_VERSION; SELECT * FROM LICENSE;
若序列号未在数据库中存储,需查看Oracle安装目录下的inventory.xml文件或使用opatch lsinventory命令(需安装OPatch工具),部分商业软件提供管理控制台(如Oracle Enterprise Manager),可通过界面查看许可证信息,具体方法需参考对应软件的官方文档。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36323.html