複数のDebian(Wheezy)システムのメンテナンスを実行する必要があります。これは実行レベル1で実行する必要があります。ただし、すべてのマシンにキーボードと画面があるわけではありません。一部は他にもあります。したがって、そこに入り、ルートパスワードを入力してジョブを実行することはできません。
だから私の質問は、「Enter root Password or ^D」プロンプトの前にコマンドを実行するようにDebianにどのように指示しますか?
私はランレベル1でのみ実行されるinitスクリプトを作成しましたが、すべてのプロセスが終了する前にまだトリガされます。
これを行う方法はありますか?
ベストアンサー1
方法を見つけましたが、汚い感じがしますね... :)
だからこの文を開け続けて、もしきれいな方法があるか調べてみましょう。
私の解決策は、suloginの代わりにスクリプトを実行し、スクリプト内の古いinittabを復元するようにinittabを変更することでした。
これは、いくつかの仮想マシンのハードドライブを圧縮するために使用した「ターミナルに切り取りと貼り付け」の概念証明バージョンです。
しかし、これが何をしているのかわからない場合は、これを試してはいけません!
mkdir -p /opt/single
cp -a /etc/inittab /opt/single/inittab
sed -i "s/\/sbin\/sulogin/\/opt\/single\/job.sh/" /etc/inittab
cat>/opt/single/job.sh<<EOF
#!/bin/bash
#restore inittab
mv -fv /opt/single/inittab /etc/inittab
#make sure no one runs this by accident
chmod -x /opt/single/job.sh
#do your thing...
mount -o remount,ro /dev/sda1
fsck.ext4 -vfp /dev/sda1
zerofree -v /dev/sda1
mount -o remount,rw /dev/sda1
#work done
reboot
EOF
chmod +x /opt/single/job.sh
telinit 1