前一段时间安装了Linux版本的CAD,在Linux有原生支持的了,而且下载直接安装即可使用,不过都有收费功能。所以这里带有一个程序叫加密狗程序的东西。senseshield(深思 / 深盾) 是北京深盾科技(原深思洛克)的软件加密与授权许可服务,核心用途是给商用软件做加密锁 / 授权认证,常见于工程、设计、造价类软件(如广联达、鲁班、部分工业软件CAD等)。
- 服务名:
senseshield.service(Linux) - 进程:
ssclt、sscfg - 驱动:
sprotect.sys(Windows) - 功能:管理硬件加密锁(U 盘锁)、云许可、软许可,软件运行前必须连此服务验授权。
起因是senseshield.service 启动超时故障排查
5月 08 09:54:11 Mt systemd[1]: senseshield.service: start-pre operation timed out. Terminating.
5月 08 09:54:11 Mt systemd[1]: senseshield.service: Control process exited, code=killed, status=15/TERM
5月 08 09:54:11 Mt systemd[1]: senseshield.service: Failed with result 'timeout'.
5月 08 09:54:11 Mt systemd[1]: Failed to start senseshield.
5月 08 09:54:11 Mt systemd[1]: senseshield.service: Scheduled restart job, restart counter is at 1384.
5月 08 09:54:11 Mt systemd[1]: Stopped senseshield.
5月 08 09:54:11 Mt systemd[1]: Starting senseshield...
从日志中看到核心问题:senseshield.service 的 StartPre 操作超时,systemd 强制终止了服务,导致启动失败并无限重启(重启次数已达 1384 次)。
因为这个东西我不使用,所以直接要清除它了。但是它安装在哪里,我不知道因为安装那个CAD软件时自动安装的。所以接下来要怎么找到这个程序及相关的文件一并清除。
一、最准命令(直接显示文件真实路径)
如果你知道这个程序有一个服务名称叫senseshield,那么可以这样操作
systemctl cat senseshield.service
运行后第一行就会显示:
# /lib/systemd/system/senseshield.service
这就是它真正的保存位置,同时文件中还记录了程序执行文件在哪里ExecStart=/opt/senseshield/senseshield,安装目录在这位置。
二、直接查找文件位置(万能命令)
同样要知道一个服务名称或者至少记得前缀啊,直接整个系统搜索。
find / -name "senseshield.service" 2>/dev/null
它会直接输出类似:
/usr/lib/systemd/system/senseshield.service
/opt/senseshield/config/senseshield.service
三、systemd 服务默认存放位置
Linux 的 .service 文件一般只会在这 3 个地方:
- /etc/systemd/system/(最常见,用户自定义服务)
- /usr/lib/systemd/system/(软件安装的服务)
- /run/systemd/system/(临时服务)
这个 senseshield 就在这个位置:
/etc/systemd/system/senseshield.service
四、开始清理文件
既然已经找到文件了,那么就可以执行卸载,清除等操作了。
在 Linux 里判断一个服务 / 程序是怎么装的,主要看 3 种来源:
- apt /dpkg 安装(系统包管理器)
- 官方.run/ 脚本安装(软件自带安装器)
- 手动解压、手动建 service(绿色 / 手动部署)
1. 先查是不是 apt /dpkg 装的(最常见)
dpkg -S senseshield
sudo dpkg --remove 程序包名 #如果是这样方式安装,可这样卸载
- 如果输出类似:plaintext
senseshield: /usr/lib/systemd/system/senseshield.service→ 是通过 deb 包 /apt 安装的 - 如果提示:plaintext
dpkg-query: no path found matching pattern→ 不是系统包安装,是脚本 / 手动装的
2. 查服务文件来自哪个包
这其实就是命令结合一起使用,也是直接读取senseshield.service 文件内容的
dpkg -S $(systemctl cat senseshield.service | head -1 | awk '{print $2}')
有结果 → apt/deb 安装
没结果 → 非系统包安装
3. 查安装目录痕迹
大部分软件的安装目录在以下两个位置,通过目录搜索相关的字符寻找
ls /opt | grep -i sense
ls /usr/local | grep -i sense
- 出现在
/opt/SenseShield/这类目录→ 大概率是软件自带安装脚本(.run 或 .sh)安装很多加密锁、商业软件都是这种。
4. 看服务文件内容判断安装方式
因为系统软件的配置有一定规范的,所以可以通过服务文件里的可执行文件程序来判断
systemctl cat senseshield.service
重点看:
ExecStart路径在/opt/xxx、/usr/local/xxx→ 脚本 /.run 安装- 路径在
/usr/bin、/usr/sbin→ 大概率 apt/deb 安装 - 里面路径乱七八糟、甚至有你手动建的目录→ 手动部署
5. 查系统安装日志
grep -i sense /var/log/dpkg.log
grep -i sense /var/log/apt/history.log
有记录 → apt 安装
没有 → 脚本 / 手动安装
总结
- dpkg -S 能查到→ apt /deb 包安装
- dpkg 查不到,但 /opt 有目录→ 软件自带 .run/ 脚本安装
- dpkg 查不到,/opt 也没有→ 手动解压 + 手动建 service
因为上面几种方式找过了,最后确认是程序自带.run解压安装的,所以直接删除/opt/senseshield/及上面提到的senseshield.service文件即可。
sudo rm -rf /opt/senseshield/
sudo rm -rf /usr/lib/systemd/system/senseshield.service
在执行rm -rf 命令时一定要认真核对,避免操作不当失误了。