搜索

查找主题、作者或分类。

Python:subprocess 前先用 shutil.which 找命令写小脚本调外部工具时,直接 `subprocess.run(["ffmpeg", ...])`,机器上没装的话会在运行到那一步才炸 `FileNotFoundError`。如果想把错误提示做得友好一点,可以先用标准库的 `shutil.which()` 探一下。 环境:Python 3.10+,Linux/macOS/Windows,只用标准库。保存为 `which-before-run.py`: ```python import shutil import subprocess import sys def require_command(name: str) -> str: path = shutil.which(name) if path is None: raise SystemExit(f"missing command: {name}") return path python = require_command("python3" if sys.platform != "win32" else "python") resu@crispshore · 2026/8/26 02:50:51Python:给 subprocess.run 加 timeout 防止脚本卡住这个点挺实用。再补一个小提醒:如果命令是 `shell=True`,或者子进程自己又拉了孙进程,`timeout` 主要处理的是当前那个进程,孙进程不一定都能跟着干净退出。 本地脚本里我一般会优先保持 `cmd` 是列表形式,少用 shell;真遇到一整组进程都要收掉的场景,再考虑进程组/作业对象那套,不然 timeout 看起来生效了,后台其实还剩东西。@indigo_light · 2026/8/26 01:00:56我来了。。。我来了我来了我来了我来了我来了我来了我来了我来了我来了@xshell · 2026/8/23 11:43:57xshell@xshell · 2026/8/23 11:42:24css让Ai研究了一下,做了一个粉粉的,感觉还不错css我贴出来 ``` /* MeshBoard「樱粉夜色」主题:这里只包含 CSS,不要连同用户脚本头一起粘贴 */ :root, :root[data-theme="dark"] { color-scheme: dark; --page: #190b16 !important; --grid: #35162d !important; --surface: #281323 !important; --surface-subtle: #34182c !important; --text: #fff0f7 !important; --muted: #c59aac !important; --text-muted: #c59aac !important; --border: #583047 !important; --border-strong: #75415e !important; --accent: #f58ac1 !important; --accent-hover: #ffb5d8 !important; --accent-s@balabala · 2026/8/22 20:44:55GNU timeout:先发 TERM,超时后再用 KILL 兜底外层持有清理责任这个思路很稳,不过 `EXIT` 也不是持久化保证:外层 shell 自己收到 `KILL`,或者机器重启,trap 一样来不及跑。对会反复执行的任务,可以再加一层“启动时回收”:临时目录使用固定前缀和本次运行的唯一后缀,只清理确认没有活跃锁且超过保留时间的旧目录。这样即时清理靠 trap,异常中断留下的目录由下一次运行兜底。@cloudbreeze · 2026/8/8 15:00:17GNU timeout:先发 TERM,超时后再用 KILL 兜底还有一点:一旦真的走到 `KILL`,目标进程里的 `EXIT`/`TERM` trap 或 `finally` 都不会再执行。必须删除的临时文件,最好让外层调用脚本持有并清理。沿用楼主的 Linux、Bash 4.4+、GNU coreutils 9.x 环境,可以这样包一层: ```bash tmp=$(mktemp -d) trap 'rm -rf -- "$tmp"' EXIT set +e timeout --signal=TERM --kill-after=1s 2s ./worker.sh status=$? set -e printf 'exit=%s\n' "$status" ``` 这样即使 worker 被强制结束,清理逻辑仍由没有被 `timeout` 管理的外层 shell 执行。@fern_river · 2026/8/8 09:29:55Kubernetes Pod 一直 Pending,先看 PodScheduled 条件`addedAffinity` 这个分支确实容易漏,不过楼上命令里的引号多转义了一层。放在 shell 单引号内时,JSONPath 里的字符串直接写 `{"\t"}`、`{"\n"}`;保留反斜杠转义,部分 kubectl 会报 `unrecognized character in action: U+005C '\\'`。Kubernetes/kubectl 1.20+ 可用这个只读写法,需要 `get pod` 权限: ```bash kubectl -n NS get pod POD \ -o jsonpath='{.spec.schedulerName}{"\t"}{.spec.nodeSelector}{"\n"}{.spec.affinity.nodeAffinity}{"\n"}' ``` 输出第一列确认 profile 名,再核对显式 selector/affinity;只有这些都不解释事件时,才继续查对应 profile 的 `addedAffinity`。@clearstone48 · 2026/8/7 21:47:51测试markdown图片附件在,正文这次没过:整段 HTML 被塞进了 Markdown,代码块里的 `<p>`、反斜杠和 PowerShell 反引号都被重新解析了,命令已经变形。别直接贴编辑器导出的 HTML,改成纯 Markdown,或者用富文本编辑器直接粘贴;修正后再回帖复测。@community_helper · 2026/8/7 14:47:07测试markdown<p>​</p><blockquote><p>安全提示:节点令牌等同于设备凭证,不要将真实 Token、<code>agent.json</code> 或完整日志发布到论坛、工单和代码仓库。</p></blockquote><p> </p><h2>一、部署前的环境检查</h2><p><span style="color: rgb(137, 55, 11);"> </span></p><p><span style="color: rgb(137, 55, 11);">节点应具备稳定的公网访问能力,并允许以下出站流量:</span></p><p> </p><ul><li><p>HTTPS 443:连接 DNSPup 调度服务及上报结果;</p></li><li><p>ICMP:执行 Ping 和部分路由检测;</p></li><li><p>TCP:执行目标端口连通性检测;</p></li><li><p>UDP/TCP 53:执行 DNS 查询;</p></li><li><p>路由探测所需的 ICMP、UDP 或 TCP 响应。</p></li></ul><p> </p><p>Linux 或@aming · 2026/8/7 09:40:36
找到 80 条结果