Ubuntu Server 22.04.1下XMRig开机自启配置问题:root用户运行时无法恢复screen会话
Ubuntu Server 22.04.1下XMRig开机自启配置问题:root用户运行时无法恢复screen会话
嘿,我来帮你搞定这个问题~ 你遇到的情况其实很好解释:当你把systemd服务的User改成root后,screen会话是创建在root用户的环境里的,而你平时用的普通用户根本看不到root名下的screen会话,所以才会弹出「没有可恢复的screen」的提示。下面给你几个实用的解决办法,你可以根据自己的需求选:
方法一:切换到root用户再恢复会话
这是最简单直接的办法,毕竟会话本来就是root创建的:
- 先执行
sudo su -或者sudo -i切换到root用户(一定要加-或者-i,这样才会加载root的完整环境变量,不然可能还是找不到会话) - 然后输入
screen -r xmrig就能正常恢复会话了 - 用完之后输入
exit就能回到普通用户环境
方法二:让普通用户有权限访问root的screen会话(谨慎使用)
如果不想每次都切root,可以调整screen的权限配置,但这个操作有一定安全风险,只有当服务器只有你自己用的时候才推荐:
- 编辑screen的全局配置文件:
sudo nano /etc/screenrc,在文件末尾加上一行:multiuser on - 保存退出后,切换到root用户:
sudo su -,然后恢复root的screen会话:screen -x xmrig - 在screen会话里输入
acladd 你的普通用户名(比如你的用户名叫powerkey,就输acladd powerkey),然后按Ctrl+A再按Ddetach会话 - 回到普通用户后,就可以用
screen -x root/xmrig来访问这个会话了
方法三:不用root也能让XMRig用上hugepages(最安全)
其实hugepages不一定非要root才能用,我们可以调整系统配置,让普通用户也能利用hugepages,这样既不用root运行XMRig,也能保持性能,还能正常用screen:
- 先查看你的普通用户的GID:
id -g,记住输出的数字 - 编辑sysctl配置文件:
sudo nano /etc/sysctl.conf,添加下面两行(第一行的数值可以根据XMRig的需求调整,一般128或256就行):vm.nr_hugepages=128 vm.hugetlb_shm_group=你的GID数字 - 执行
sudo sysctl -p让配置立即生效 - 把systemd服务文件里的
User改回你的普通用户名,重启服务:sudo systemctl daemon-reload && sudo systemctl restart xmrig.service - 之后XMRig就能以普通用户身份运行,同时正常使用hugepages,你用普通用户执行
screen -r xmrig也能正常恢复会话了
为啥原来的方法不行?简单说,每个用户的screen会话都存在各自的专属目录里:普通用户的在/run/screens/S-你的用户名,root的在/run/screens/S-root,普通用户没有权限访问root的目录,自然看不到对应的会话。
备注:内容来源于stack exchange,提问作者Powerkey
相关产品推荐
相关产品推荐

