起動時にシェルスクリプトを実行する(Kali Linux)

起動時にシェルスクリプトを実行する(Kali Linux)

これは非常に基本的なようで、起動時に成功せずに実行する簡単なスクリプトを取得するためにいくつかのチュートリアルに従いました。

私のスクリプトは次のとおりです(ルートディレクトリにあります)。

#! /bin/bash
xmodmap ~/.xmodmaprc
echo 0 | sudo tee /sys/module/hid_apple/parameters/iso_layout

このスクリプトはデフォルトでCtrlキーとCommandキーを切り替えて自分のキーマップを変更します(MacBookでやっているように)。chmod実行可能に編集して実行または実行する./keymap_fix.shと、正常に実行されます。/root/keymap_fix.sh

私はこの簡単なチュートリアルに従いました。 https://www.cyberciti.biz/tips/linux-how-to-run-a-command-when-boots-up.htmlそしてhttps://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/

だからシェルスクリプトをコピーして/etc/init.d実行しました。update-rc.d keymap_fix.sh defaults 100

を追加して同様の方法でcrontabを設定しようとしましたが、@reboot /root/keymap_fix.sh何も機能しませんでした!再起動するたびに、キーマップは同じままです。 :/

誰でもここで私を助けることができればとても感謝します。ありがとうございます!

答え1

このようなコマンドはxmodmapXウィンドウでのみ実行できます。

dot.desktopxdg autostartフォルダにファイルを作成する必要があります。たとえば、ファイルを生成し、~/.config/autostart/startup.desktopその中に次の行を入力します。

Exec=~/bin/startup.sh

バラよりこのリンク詳しくは

答え2

この質問は重複しています。kali linux起動時の起動スクリプト

私は次のステップに従ってこの質問に答えました。

sudo vim /etc/systemd/system/rc-local.service

次に、次の内容を追加します。

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

注:16.10以降、Ubuntuは/etc/rc.localファイルに付属していません。 Kaliのような他のディストリビューションでも同様です。このコマンドを実行してファイルを生成できます。

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local

次に、/etc/rc.local ファイルに実行権限を追加します。

sudo chmod +x /etc/rc.local

その後、システムの起動時にサービスを有効にします。

sudo systemctl enable rc-local

最後にサービスを開始し、ステータスを確認します。

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

完全な投稿:Systemdを使用して/etc/rc.localを有効にする方法

関連情報