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

Hig*_*125 4 scripts 18.04

我已经检查了几个教程,但是在启动操作系统时我无法运行我的脚本。我已经把文件放在 /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.
Run Code Online (Sandbox Code Playgroud)

注意:在 VM 中运行。它在手动启动时工作,问题是我不想手动运行我希望它在系统加载时启动。

Gry*_*ryu 11

  • 使用以下命令创建一个/etc/systemd/system/xrandr.service文件(您可以指定您喜欢的服务名称):

    sudo -H gedit /etc/systemd/system/xrandr.service
    
    Run Code Online (Sandbox Code Playgroud)
  • 把下一个放在里面:

    [Unit]
    After=multi-user.target
    
    [Service]
    User=your_user
    ExecStart=/home/your_user/scripts/xrandr.sh
    
    [Install]
    WantedBy=default.target
    
    Run Code Online (Sandbox Code Playgroud)
  • 将脚本放入/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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

通过 来检查您的显示echo $DISPLAY,如果没有:0,则在您的脚本中更改它。

要查看您的脚本有什么问题,您可以使用下一个命令在终端中进行监控:

$ journalct -f
Run Code Online (Sandbox Code Playgroud)

  • 我建议不要使用纯文本密码执行 `sudo`,而是以具有足够权限的用户身份运行脚本。 (5认同)