![使用 systemd 作为服务执行的 python 脚本在启动时迭代挂载点](https://linux22.com/image/213823/%E4%BD%BF%E7%94%A8%20systemd%20%E4%BD%9C%E4%B8%BA%E6%9C%8D%E5%8A%A1%E6%89%A7%E8%A1%8C%E7%9A%84%20python%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%AD%E4%BB%A3%E6%8C%82%E8%BD%BD%E7%82%B9.png)
我想在系统启动时使用 Python 脚本迭代安装点。
该脚本在完全启动的系统上运行良好(即使调用为sudo systemctl start launcher.service
),但在重新启动后启动时无法找到挂载点。
我猜系统需要一些时间在启动时安装外部设备,并且脚本启动得比这早,所以我应该将服务更改为在某些事情之后执行。
我现在的服务在[Unit]中没有 AFTER:
[Unit]
Description=Python script executing after reboot.
[Service]
Type=simple
User=jetson
WorkingDirectory=/home/jetson/
ExecStart=/usr/bin/python3.6 /home/jetson/launcher_script.py
[Install]
WantedBy=multi-user.target
我应该在AFTER=___
systemd 中使用什么来在已安装驱动器的系统上启动脚本?或者是否有更可靠的方法来在启动的系统上自动执行脚本?
问题是我事先不知道安装点,因为 Jetson 将驱动器安装为/media/jetson/9DC3-C264
或/media/4A21-EE5D
。这就是我编写一个 Python 脚本来迭代挂载点以搜索配置文件的原因之一(而且我无法挂载它,fstab
因为它每次都可能是不同的驱动器/卡)。
Python 脚本看起来像这样:
#!/usr/bin/python3.6
import psutil
partitions = psutil.disk_partitions()
for p in partitions:
if p.mountpoint != '/':
#DO SOMETHING
我的系统是 NVIDIA Jetson 上的 Ubuntu 18.04。我想添加更新软件或更改其参数的可能性,而无需用户输入或通过外部 microSD 卡或 USB 驱动器进行网络。另外,我不能保证将安装驱动器,并且无论如何我都想启动脚本。