还有其他方法可以在 Ubuntu 上启动脚本吗?

还有其他方法可以在 Ubuntu 上启动脚本吗?

我已经查看了几个教程,但在启动操作系统时无法运行我的脚本。我已经将文件放在 /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;只需编写命令本身即可。

相关内容