web-dev-qa-db-ja.com

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.

:VM内で実行されます。そしてそれは手動で開始したときに機能します、問題は私が手動で実行したくないということです私はシステムがロードしたときにそれを開始したいです。

4
HigorLucas125
  • 以下を使用して/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
11
Gryu

これはシステムの起動時に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を使用してスクリプトを起動する必要はありません。コマンド自体を記述するだけです。

2
Fjor