小编Kal*_*Kal的帖子

systemd 服务单元文件中的动态变量

有没有办法在 systemd 服务单元文件中动态分配环境变量?

我们有一台有 4 个 GPU 的机器,我们想为每个 GPU 启动某个服务的多个实例。例如:

  • gpu_service@1:1.service
  • gpu_service@2:1.service
  • gpu_service@3:1.service
  • gpu_service@4:1.service
  • gpu_service@1:2.service
  • gpu_service@2:2.service
  • gpu_service@3:2.service
  • gpu_service@4:2.service
  • 恶心

因此,1:1、2:1 等实际上是服务单元文件中的 %i。

为了将服务绑定到特定的 GPU,服务可执行文件会检查某个环境变量,例如:

USE_GPU=4
Run Code Online (Sandbox Code Playgroud)

有没有办法在服务单元文件中获取 %i 并通过一些(shell)函数运行它来导出 GPU 编号,然后我可以相应地设置 USE_GPU 环境变量?

最重要的是,我不想要编写多个/etc/systemd/system/gpu_service@x:y.service/local.conf文件的麻烦,这样我就可以启动更多的实例。

configuration systemd services

21
推荐指数
2
解决办法
5万
查看次数

如何在 SuSE 8 中找到与我的设备对应的设备节点?

我不得不使用一堆运行 SuSE 8 的销售点系统。它们是我客户的计算机。我们一直在处理这些旧系统,直到他们将整个车队升级到 SLE 11。

问题:系统现在有两个设备竞争 ttyUSB* 字符设备节点。它们具有不同的供应商 ID 和产品 ID。SuSE 8 没有 udev,而是有 devfs。

知道设备的供应商 ID 和产品 ID,以及负责设备的内核模块(它是 ipaq 内核模块),我如何找出它已分配给哪个字符设备节点,以一种可以将其存储在POSIX shell 脚本中的字符串(例如 $DeviceNode)?

现在,我在我的 shell 脚本中以一种非常愚蠢的方式来做:

DeviceNode=$(dmesg | tac | grep "PocketPC PDA converter now attached to" | set -n 's/.*now attached to \([[:alnum:]]\{1,\}\).*/\1/p')
Run Code Online (Sandbox Code Playgroud)

所以我得到,例如

> echo $DeviceNode
ttyUSB1
>
Run Code Online (Sandbox Code Playgroud)

当然,问题之一是设备可能已经被拔掉了,我无法用这种幼稚的方法来判断。

有没有更好的办法?

编辑:所以我今天早上发现了这篇文章。我可以假设,在 /proc/tty/driver/usbserial 中,从第 2 行开始,每行的第一个数字是 ttyUSBx 之一的次要编号吗?

编辑 2:另一种(也许更好)的解决方案是获得持久的节点关联(例如,始终将具有已知供应商 ID 和已知产品 ID 的设备与 ttyUSB1 关联)。这可以在 devfs 中实现吗?

linux suse usb devices

5
推荐指数
0
解决办法
3581
查看次数

`scrub(1)`,但可以从偏移量恢复

我需要擦洗几个非常大的硬盘。但是,我无法从桌面执行此操作。我需要在移动中使用笔记本电脑进行操作。scrub(1)在 HDD 上一次通过需要一天多的时间,但我不可能让我的笔记本电脑静止那么久。

scrub(1) 本身不支持任何类型的偏移命令行参数。

有没有办法做scrub(1)(写入随机字节),但可以恢复的方式?基本上该命令需要在我中断它时打印出偏移量,并且它需要接受一个偏移量参数来恢复。

scrub

4
推荐指数
2
解决办法
386
查看次数

标签 统计

configuration ×1

devices ×1

linux ×1

scrub ×1

services ×1

suse ×1

systemd ×1

usb ×1