Существуют другие способы запустить двоичный файл на Ubuntu?

Я уже проверил несколько учебных руководств, но я не могу выполнить свой двоичный файл при запуске операционной системы. Я уже поместил файл в/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. И это работает, когда запускается вручную, проблема состоит в том, что я не хочу работать вручную, я хочу, чтобы это запустилось когда системные нагрузки.

3
задан 6 April 2020 в 23:12

2 ответа

  • Создайте 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
9
ответ дан 7 April 2020 в 23:16

Поскольку эта команда предназначена для запуска от имени пользователя 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; просто напишите сами команды.

2
ответ дан 8 April 2020 в 04:18

Другие вопросы по тегам:

Похожие вопросы: