linux中用户登陆系统自启动制定脚本

linux系统(kylin)中因为一些特殊原因,需要用户每次登陆后自动调节屏幕分辨率。目前找到通过xrandr来实现调节分辨率,这个命令完全可行的,只是放到/etc/profile.d中后却无法实现登陆后自动调节分辨率,怀疑是在执行自启脚本时界面UI还没有加载出来所以导致命令无效,有没有一种能在整个系统都加载完毕后再去执行的自启,求指教该怎么办!

你可以再命令前加一行sleep 60 等系统完全起来之后再运行命令
我之前在麒麟系统开机自启是建了个脚本,可以参考https://blog.csdn.net/qq_17576885/article/details/121011836

为什么不能直接设置分辨率?
或者说客户会设置分辨率,但你有需要固定到某个分辨率?

登陆自欺执行脚本过程中有时候会报错:
Error found when loading /etc/profile:
PlatformTheme Create "ukui"
ProxyStyle create "kysec _auth" "ukui"
Qt5UKUIStyle create "kysec_auth""ukui-default"
As a result the session will not be configured correctly,
You should fix the problem as soon as feasible.

参考一下,延迟执行:
https://www.csdn.net/tags/MtTaEg5sMzEwNDgyLWJsb2cO0O0O.html

编写成服务,放置在x界面启动后执行

放到登录用户的 ~/.bashrc 文件中试试,这个脚本应该是用户登录时会执行的

我来晚了吗,搞定了吗

加入用户环境变量也不行吗,随登录执行的

这个涉及到linux系统的服务,用服务来做比较适合你,上电(开机)的一瞬间,服务的执行级别是比bashrc高的,建议你用服务来做,肯定可以解决你的问题。方法如下:
PS:ros_start.service 一模一样复制粘贴即可,ros_starting.sh加入你的调节屏幕分辨率的代码即可,启动服务ok;
具体操作如下:

1. 在/etc/systemd/system/目录下创建一个服务,里面内容跟下面一样即可,名为:ros_start.service

[Unit]
Description=/usr/local/ros_starting.sh Compatibility
After=network.target

[Service]
Type=forking
ExecStart=/bin/bash /usr/local/ros_starting.sh
ExecReload=/bin/bash /usr/local/ros_starting.sh
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Alias=ros_start.service

2. 在/usr/local/创建一个开机启动的脚本,在这个脚步里面加入你调节屏幕分辨率的代码,名为:ros_starting.sh
#!/bin/bash
sleep 2
加入调节屏幕分辨率的代码(记得加sudo,给管理员权限)

3. 脚本授权
#授权脚本为可执行
sudo chmod 777 ros_starting.sh

4. 设置ros_start为服务,并且启动
#重新载入当前的服务

sudo systemctl daemon-reload

#设置服务名字为:ros_start

sudo systemctl enable ros_start

#开启服务

sudo systemctl start ros_start.service

#检查服务开启状态(如果服务在active状态,表示启动成功)

sudo systemctl status ros_start.service

查看服务状态是action,绿色的,说明服务已经启动了