Я уже проверил несколько учебных руководств, но я не могу выполнить свой двоичный файл при запуске операционной системы. Я уже поместил файл в/etc/init.d, / начальная загрузка, / мусорное ведро,/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.
Примечание: выполнения в VM. И это работает, когда запускается вручную, проблема состоит в том, что я не хочу работать вручную, я хочу, чтобы это запустилось когда системные нагрузки.
Создайте a /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
Поскольку эта команда предназначена для запуска от имени пользователя root при запуске системы, вы можете добавить ее как задание cron, запускаемое пользователем root (я использовал higor в качестве пользователя, vm в качестве имени вашей системы) следующим образом:
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
Сохраните файл и вернитесь к пользователю higor с помощью команды exit
.
Эта строка будет обрабатываться при каждой перезагрузке системы от имени пользователя root (подробнее о настройке cron можно узнать, выполнив команду man 5 crontab
), и записывать любые сообщения или ошибки в файл /root/ script.sh.log
. Поскольку этот скрипт уже работает от имени пользователя root, ему не нужно запускать команды внутри него с помощью sudo
; просто напишите сами команды.