我已经查看了几个教程,但在启动操作系统时无法运行我的脚本。我已经将文件放在 /etc/init.d 、 /boot、 /bin、 /urs/bin 中。我想我已经把它放在了所有可能的地方。这是我的代码。
#!/bin/bash
echo "Starting command to put resolution on 1920x1080"
echo "Password_of_sudo" | sudo -S xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync &&
sudo xrandr --addmode Virtual1 1920x1080_60.00 &&
sudo xrandr --output Virtual1 --mode 1920x1080_60.00
echo "Finished.
笔记:在虚拟机内运行。手动启动时它可以工作,问题是我不想手动运行,我希望它在系统加载时启动。
答案1
使用以下命令创建一个
/etc/systemd/system/xrandr.service
文件(您可以指定您喜欢的服务名称):sudo -H gedit /etc/systemd/system/xrandr.service
将以下内容放入其中:
[Unit] After=multi-user.target [Service] User=your_user ExecStart=/home/your_user/scripts/xrandr.sh [Install] WantedBy=default.target
将您的脚本放入
/home/your_user/scripts
文件夹中或指定脚本的路径。sudo chmod 664 /etc/systemd/system/xrandr.service
sudo systemctl enable xrandr.service
- 检查它是否正常工作
sudo systemctl start xrandr.service
另外,您可以按照以下方式修改文件:
#!/bin/bash
echo "Starting command to put resolution on 1920x1080" | logger
export DISPLAY=:0 && xhost + local
echo "Password_of_sudo" | sudo -S xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync &&
sudo xrandr --addmode Virtual1 1920x1080_60.00 &&
sudo xrandr --output Virtual1 --mode 1920x1080_60.00
echo "Finished." | logger
sudo
但是,如果命令不需要,最好不要使用或管理权限:
#!/bin/bash
echo "Starting command to put resolution on 1920x1080" | logger
export DISPLAY=:0
xrandr --newmode "1920_new_name" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync &&
xrandr --addmode Virtual1 1920x1080_60.00 &&
xrandr --output Virtual1 --mode 1920x1080_60.00
echo "Finished." | logger
通过 检查您的显示echo $DISPLAY
,然后,如果还没有:0
,则在您的脚本中进行更改。
要查看脚本出了什么问题,可以使用下一个命令在终端进行监控:
$ journalct -f
答案2
由于这是一个在系统启动时以 root 身份运行的命令,因此您可以将其添加为由 root 启动的 cron 作业(我使用了希戈尔作为你的用户,虚拟机作为您的系统名称)替换为以下内容:
higor@vm$ sudo su - #this changes to root temporarily
[sudo] password for higor: #enter your password
root@vm# cp /home/higor/script.sh /root #copy the script to /root home
root@vm# chown root:root script.sh #make the script property of root
root@vm# chmod u+x script.sh #make the script executable
root@vm# VISUAL=nano crontab -e #uses nano to edit crontab config of root
然后添加以下行:
@reboot /root/script.sh >/root/script.sh.log 2>&1
保存文件并返回给用户希戈尔使用命令exit
。
每次系统以 root 身份重启时都会处理此行(您可以使用命令了解有关 cron 配置的更多信息man 5 crontab
),并将任何消息或错误写入文件/root/script.sh.log
。由于此脚本已以 root 身份运行,因此不需要使用启动其中的命令sudo
;只需编写命令本身即可。