/etc/rc.local3.py
#!/usr/bin/env python3
import os
import subprocess
os.chdir('/dev/dvb')
for ADAPTER in [ 0,1,2,4 ]:
for int1 in [ 20,21,22,23 ]:
dirname = 'adapter' + str(int1)
os.makedirs(dirname, exist_ok=True)
os.chown(dirname, 0, 0)
os.chmod(dirname, 0o755)
completed = subprocess.run(['/usr/bin/nice', '--4', \
'/usr/local/bin/fuse_b25', '--target', '/dev/dvb/adapter0', \
'/dev/dvb/adapter20', '-o', 'allow_other'])
completed = subprocess.run(['/usr/bin/nice', '--4', \
'/usr/local/bin/fuse_b25', '--target', '/dev/dvb/adapter1', \
'/dev/dvb/adapter21', '-o', 'allow_other'])
completed = subprocess.run(['/usr/bin/nice', '--4', \
'/usr/local/bin/fuse_b25', '--target', '/dev/dvb/adapter2', \
'/dev/dvb/adapter22', '-o', 'allow_other'])
completed = subprocess.run(['/usr/bin/nice', '--4', \
'/usr/local/bin/fuse_b25', '--target', '/dev/dvb/adapter3', \
'/dev/dvb/adapter23', '-o', 'allow_other'])
/etc/systemd/system/rc-local2.service
[Unit]
Description=/etc/rc.local3.py Compatibility
[Service]
Type=oneshot
ExecStart=/etc/rc.local3.py
TimeoutSec=0
StandardInput=tty
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable rc-local2.service
$ sudo reboot
systemdのサービスにできなかったときと、
何が変わったか、申しますと、rc.local3.pyの
下4行のインデントを外したことだけです。
ループなしで、いちいち仮想アダプタにつなげているのに、
for文でループさせちゃっていました。とにかく、シェルスクリプト
と違って、インデントに大きな意味があるんですね。
正しくない状態で、xfce4の「自動開始アプリケーション」で
どうして動いてくれていたのか、判りません。
仮想アダプタにつなげるのもループさせて、
1行で済ませられるはずなのですが、
スクリプトに持ち込んだunixコマンドの中で
pythonの設定変数を利かせる方法をまだ理解していません。
収穫としては、systemdのサービスは
pythonのスクリプトであっても動かせるということです。