telinit 1 そこからコマンドを実行します。

telinit 1 そこからコマンドを実行します。

複数の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

おすすめ記事