すでにいくつかのチュートリアルを確認しましたが、オペレーティングシステムの起動時にスクリプトを実行できません。私はすでに/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.
注:VM内で実行されます。そしてそれは手動で開始したときに機能します、問題は私が手動で実行したくないということです私はシステムがロードしたときにそれを開始したいです。
以下を使用して/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として実行されるコマンドであるため、rootによって起動されたcronジョブとして追加できます(ユーザーとしてhigorを使用し、vm asご使用のシステム名)を次のように入力します。
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
コマンドを使用してユーザーhigorに戻ります。
この行は、システムが再起動するたびにrootとして処理され(man 5 crontab
コマンドを使用してcron構成の詳細を確認できます)、メッセージまたはエラーを/root/script.sh.log
に書き込みます。このスクリプトはすでにrootとして実行されているため、Sudo
を使用してスクリプトを起動する必要はありません。コマンド自体を記述するだけです。