AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-81989

Zhro's questions

Martin Hope
Zhro
Asked: 2025-04-11 05:50:15 +0800 CST

如何避免脚本运行每个脚本仅应运行一次的程序的竞争条件

  • 5

我有一个脚本,它运行一个程序,我只想让它每个脚本单独运行一个实例。例如,我有两个脚本“a”和“b”,它们分别运行一个 Java 程序。我只希望脚本“a”和脚本“b”分别运行一个 Java 程序实例。在这种情况下,我无法测试某个可执行文件是否正在运行,因为它是 JVM。启动应用程序后,脚本本身也会退出,所以我无法测试它是否已经在运行。

我可以将正在运行的进程的 PID 写入文件并进行测试,但这样做会引发竞争条件,因为我必须等待程序启动,然后再将 PID 记录到文件中。如果启动脚本运行多次且速度过快,最终会导致程序的多个实例同时运行。此外,还存在一种罕见的情况,即两个实例同时尝试写入 PID 文件,这会引发另一个问题,导致我有一个孤立进程,我根本没有 PID 记录。

什么是从启动脚本中锁定程序的可靠方法,以便我只能从脚本中运行单个实例而不存在竞争条件?

请注意,这并不仅限于运行 Java 程序。这只是一个例子。

bash
  • 3 个回答
  • 51 Views
Martin Hope
Zhro
Asked: 2024-02-17 14:06:03 +0800 CST

如何在 Bash 中针对逻辑表达式中未处理的运行时错误进行防御性编码?

  • 8

我刚刚遇到一个错误,脚本中缺少一个函数。我已经trap提出了这些异常以提前停止脚本,但我注意到这并没有发生。进一步研究这一点,我发现作为逻辑表达式一部分发生的错误被认为是该表达式的一部分,而不是错误本身。

例如,请参阅此片段:

function _raise_error() {
    >&2 echo "Error on line $1"
}

trap '_raise_error $LINENO' ERR

# STDERR: _missing_function: command not found
_missing_function && echo "This expression is never true"

echo "This is printed, because the missing function error is not trapped"

是否有更好的方法来更具防御性地编写此代码,以使脚本在逻辑表达式中缺少函数时提前结束?我不确定如何捕捉这一点。在这种情况下使用set -e并没有什么区别,因为我已经捕获了错误并终止了脚本。

我最好的猜测是我需要将线路换行false。这不太理想,但我想不出更好的方法。

_missing_function && { echo "This expression is never true"; } || false
bash
  • 1 个回答
  • 188 Views
Martin Hope
Zhro
Asked: 2019-09-22 12:04:24 +0800 CST

Samba 工具报告“无法初始化消息传递上下文”

  • 3

在运行与 Samba 交互的各种工具时,我在终端收到以下消息:

无法初始化消息传递上下文

例如:

$ smbclient //localhost/$USER
Unable to initialize messaging context
Enter WORKGROUP\mattd's password: 

$ smbtree
Unable to initialize messaging context
Enter WORKGROUP\mattd's password: 

这是什么意思,为什么我会看到它?

我正在运行 Fedora 30。

samba
  • 3 个回答
  • 11803 Views
Martin Hope
Zhro
Asked: 2019-09-19 04:05:02 +0800 CST

从 FileZilla 下载的文件有“-????????? ? ? ? ?” 权限,我不能用root chown它们

  • 0

我通过 FileZilla 下载了一些文件,子目录中的所有文件都有这个“???” 所有者/组权限:

-????????? ? ? ? ?            ? file_a.txt
-????????? ? ? ? ?            ? file_b.txt
-????????? ? ? ? ?            ? file_c.txt

这是从“user_a”查看时,但当以 root 身份查看时,则在“user_a:user_a”处正确识别。我尝试过,chown -R <owner>:<group> path/但权限看起来仍然是正确的,并且看起来仍然像“???” 在“user_a”上。

我尝试复制文件夹并修复权限,但它仍然一团糟。我怎样才能解决这个问题?

permissions
  • 1 个回答
  • 148 Views
Martin Hope
Zhro
Asked: 2019-09-15 16:57:25 +0800 CST

记住 ln 参数顺序的提示?

  • 82

多年来我一直ln在编写符号链接,但我仍然把参数的顺序弄错了。

这通常让我写:

ln -s a b

然后看着输出提醒自己。

我总是想像a -> b我读到的那样,而实际上恰恰相反b -> a。这感觉违反直觉,所以我发现我总是在怀疑自己。

有没有人有任何提示可以帮助我记住正确的顺序?

symlink ln
  • 14 个回答
  • 7526 Views
Martin Hope
Zhro
Asked: 2019-09-14 13:39:33 +0800 CST

“保存更改”模式对话框使用“关闭而不保存”的起源、缺少键盘加速器以及如何与这些对话框交互

  • 2

来自 Windows,我非常习惯于非常常见的“保存更改”模式对话框,它提供“是/否/取消”选项,其中“Y”和“N”被提供为键盘加速器(快捷键)。

在 Linux 上,我经常会尝试关闭未保存的文档,然后通过键入“N”来关闭对话框——但这不起作用。不仅范式不同(“关闭而不保存”与“否”),而且似乎从来没有任何加速器。

我在 Sublime Text 中尝试过:

在此处输入图像描述

梅花:

在此处输入图像描述

编辑:

在此处输入图像描述

LibreOffice 作家:

在此处输入图像描述

这是 Linux 上此类对话的正常范例吗?它的起源是什么?它是 GTK 提供的对话框吗?

对于一个非常普通的对话,我觉得它非常不友好。我必须改为使用选项卡来逐步查看聚焦的按钮。这并不总是很明显,具体取决于使用的主题。

为什么没有加速器?它们在模态对话框中不受支持吗?

我正在尝试让自己熟悉常见的模态范式(至少对于 GTK),这样我就不必考虑它,只需完全从键盘上排队我的操作即可。对于这个样本集,似乎“tab,enter”是关闭和关闭而不保存的方式。


我发现 Sublime Text 在 Windows 上使用预期的“是/否/取消”对话框和在 Linux 上使用“关闭而不保存/取消/保存”对话框(就像那里的其他应用程序一样)很有趣。我怀疑这一定是一个积极的决定。

linux
  • 3 个回答
  • 497 Views
Martin Hope
Zhro
Asked: 2019-09-01 12:51:39 +0800 CST

Wine 游戏无法运行并说需要 256 色?

  • 2

我正在尝试在 Wine 下运行Yobi 的基本拼写技巧,但收到以下错误消息:

Basic Spelling Tricks CD 需要支持 256 色。

这是一个最初为 Windows 3.1 制作的游戏,所以它是一个 win16 游戏,如果这有所作为的话。它在 DOSBox(DOS > Win 3.11 > Game)下运行良好,但在我尝试为旧 DOS 游戏设置的上网本上运行速度太慢。我希望在 Wine 下运行它会加快速度,如果我能让它工作的话。

wine
  • 1 个回答
  • 1173 Views
Martin Hope
Zhro
Asked: 2019-08-26 14:24:49 +0800 CST

java-openjdk 和 java-latest-openjdk 有什么区别?

  • 0

我正在查看 Fedora 上可用于 Java 的软件包并看到了这个:

java-openjdk是版本 12.0.0.33-4 java-latest-openjdk是版本 12.0.2.9-1

很明显,“最新”是最新版本。但否则有什么区别?两者都在滚动发布。最新的软件包是否只是具有更多潜在错误的前沿?

fedora java
  • 1 个回答
  • 131 Views
Martin Hope
Zhro
Asked: 2019-08-22 19:42:31 +0800 CST

为什么构建 RPM 的过程如此孤立?

  • 1

我正在学习如何为我自己的包创建 RPM。通常情况下,我可以在登录自己的帐户时做任何事情,但制作 RPM 的说明似乎总是希望您使用其他帐户。

我遵循的一个教程使用了rpm-build和rpmdevtools. 例如,在我的主目录和(不是我所期望的当前目录)中rpmdev-setuptree创建一个目录。rpmbuild/说明还建议我创建一个单独的build帐户。这似乎太过分了,它使管理这个特殊帐户和我正在开发的帐户之间的文件变得困难。

Fedora官方文档使用fedora-packager和fedora-review包,然后继续让您将自己添加到模拟组。再次,它建议:

您还可以创建一个单独的用户并将其用于进行 RPM 开发。确保用户是模拟组的一部分并输入fedora-packager-setup命令。

这两个说明都鼓励在单独的帐户上构建 RPM。

为什么是这样?为了方便起见,我的下意识反应是尝试以某种方式解决这个问题。从我的普通帐户创建 RPM 可能会遇到什么问题?

fedora rpm
  • 3 个回答
  • 207 Views
Martin Hope
Zhro
Asked: 2019-08-21 18:33:40 +0800 CST

/etc/yum/repos.d 曾经是一件事吗?

  • 2

在我读过的一些地方,用户提到了/etc/yum/repos.dside的路径/etc/yum.repos.d。这是在某个时候实际使用的路径吗?

我什至加载了 CentOS 5.11,它仍然是/etc/yum.repos.d. 曾经使用过这条其他路径吗?repos.d 目录不在里面似乎很奇怪/etc/yum。有人知道这件事的历史吗?

rhel centos
  • 1 个回答
  • 117 Views
Martin Hope
Zhro
Asked: 2018-12-06 01:37:03 +0800 CST

如何获取属于预配置的 firewall-cmd 服务的端口列表?

  • 8

我想在我的 CentOS 7 防火墙中打开以下端口:

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)

我可以猜测服务名称samba包括 TCP 445,但我不知道其他端口是否预配置了服务名称。

我可以列出支持的服务:

$ firewall-cmd --get-services

但这并没有告诉我服务配置了哪些端口。

有没有办法列出哪些端口属于这些服务,以便我可以找到我需要的端口?

centos systemd
  • 1 个回答
  • 10470 Views
Martin Hope
Zhro
Asked: 2018-11-28 11:46:32 +0800 CST

硬盘的 WWN 有哪些用例?

  • 7

我今天在设置一个新系统时注意到,由 表示的磁盘/dev/disk/by-id也有一个我不熟悉的 WWN 链接:

在此处输入图像描述

我的研究表明,这是一个“全球数字”或驱动器的某种唯一 ID。这个用例是什么,什么时候使用它而不是驱动器的其他表示的 ID、序列号和 UUID(来自/dev/disk/by-uuid)。

此 WWN 标识符的文档链接也很有用。我在 Google 上获得了很多关于光纤频道内容的点击率。这是一个相关的用例还是完全其他的东西?

disk uuid
  • 1 个回答
  • 8698 Views
Martin Hope
Zhro
Asked: 2018-11-27 20:43:35 +0800 CST

安装 NetworkManager-wifi 后如何重新加载 NetworkManager

  • 4

我安装了一个无线网卡,并nmcli报告它是“不受管理的”,红色的文本是“缺少插件”。

谷歌搜索让我发现我需要安装必要的“NetworkManager-wifi”包。通过有线连接安装后,关于插件丢失的红色消息直到重新启动后才消失,之后设备被管理并自动连接到我通过设置的网络nmtui。

我的问题是,如何重新加载 NetworkManager 以识别 wifi 工作所需的插件而无需重新启动?

我试过了:

$ service network reload

这没有任何影响。

centos wifi
  • 1 个回答
  • 5185 Views
Martin Hope
Zhro
Asked: 2018-11-23 12:50:17 +0800 CST

安装后启动 CentOS 时,是什么导致我的 EFI 分区损坏?

  • 1

我正在尝试在小型 PC ASUS Eee Box EB1037上安装最新的 CentOS 7.5 x64 。它是带有板载 NVIDIA GeForce GT 820M的Intel Celeron J1900 (Bay Trail)。除非首先禁用 Nouveau,否则安装媒体将锁定。这可以。但在安装和随后的重新启动后,EFI 分区似乎已损坏。

这个问题不是关于如何引导故障排除,而是理解为什么这个引导失败会破坏 EFI 分区并导致 GRUB 失败。

下面是安装过程:

  • 将 CentOS 7.5 刻录到 USB
  • 引导至 USB 安装程序(grub 引导加载程序)
  • 编辑 grub 选项以添加“nouveau.modeset=0”

在此处输入图像描述

  • 设置时区
  • 软件选择:最小安装(无更改)
  • 网络和主机名:设置主机名
  • 将手动分区设置为“标准分区”(无 LVM)和自动分区布局

在此处输入图像描述

  • 安装继续
  • 设置root密码和用户帐户(作为管理员)

在此处输入图像描述

  • 安装完成
  • 重启
  • 硬盘GRUB出现

在此处输入图像描述

我没有更改任何 GRUB 设置(例如禁用 Nouveau)。在此处查看默认设置:

在此处输入图像描述

尝试使用这些默认值启动 CentOS,它按预期挂起(因为我没有禁用 Nouveau)。我所能看到的只是一个黑屏。显示器已打开,但键盘指示灯和背光以及光学鼠标 LED 均已关闭。键盘对 ctrl-alt-del 不负责任。

按住电源按钮执行硬重置。系统第二次启动到硬盘 GRUB 菜单,没有问题。尝试再次使用默认值启动,它锁定和以前一样(正如预期的那样,因为我还没有禁用 Nouveau)。

请注意,我仍然插入了 CentOS USB 安装程序。在第三次重新启动后(在前两次安装后重新启动之后),系统将我带到 USB GRUB 而不是硬盘之一。奇怪的。弹出 CentOS USB 并使用 ctrl-alt-del 重新启动。

现在我在屏幕上看到一条来自 GRUB flash 的消息,简要指出它无法读取 EFI 分区:

在此处输入图像描述

片刻之后它消失了,我看到了这个:

在此处输入图像描述

系统现在不再可引导至 EFI 分区。

为什么会这样?EFI 分区是如何损坏的?

附加信息

Secure Boot is Enabled in the BIOS and cannot be disabled but is set to "Other OS".

在此处输入图像描述

There is only ONE SATA port inside the unit and it is populated by a Samsung 850 Pro 500GB SSD. Despite being set to AHCI and visible as SATA1 and the only disk connected to the system, CentOS identifies it as sdb instead of sda, possibly because it thinks that the USB install media is sda. It does not present the USB drive as a second disk during installation, however, and displays the Samsung SSD as the only visible drive.

在此处输入图像描述

GRUB sees the attached CentOS install USB media as (hd0) and the onboard SATA as (hd1) when both as inserted. The onboard SATA is seen as (hd0) when the USB media is removed. Interestingly, the onboard SATA is seen as sd by the CentOS installer but hd by GRUB.

在此处输入图像描述

在此处输入图像描述

Highlights

  • System has an Nvidia graphics processor (Optimus?)
  • Secure Boot is ENABLED (cannot be disabled)
  • BIOS presents USB disks as attached SATA disks? (sda during installation, hd0 in GRUB)

PLEASE NOTE

I can already get the system to boot by removing the USB stick after installation, setting nouveau.modeset=0 and updating GRUB afterwards at /boot/efi/EFI/centos/grub.cfg.

The question is to understand what is corrupting the EFI partition!

Photo of the system booted:

在此处输入图像描述

centos system-installation
  • 1 个回答
  • 3607 Views
Martin Hope
Zhro
Asked: 2018-08-05 10:01:27 +0800 CST

grep 文档中列出的“组分隔符”选项在哪里?

  • 1

我的 grep 风格支持--group-separator,--no-group-separator但我只是通过谷歌搜索如何解决问题才发现这一点:

https://stackoverflow.com/questions/2168065/how-do-i-get-rid-of-line-separator-when-using-grep-with-context-lines

我试过了:

grep --help | grep separator

和

man grep
/group-separator

没有结果。

如果没有 Google 和 Stack Exchange,我会在哪里找到这些信息?

grep man
  • 1 个回答
  • 1466 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve