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
    • 最新
    • 标签
主页 / unix / 问题

问题[process](unix)

Martin Hope
learningtech
Asked: 2024-12-08 06:09:18 +0800 CST

理解命令、进程和命名空间的概念

  • 5

我不是一个熟练的 Linux 用户,但我想更好地理解这篇文章中关于 Linux 命名空间的内容

https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory

我想我的理解失败可能与对“命令”、“过程”以及其他一些内容的理解不足有关。

首先,让我解释一下我用于学习的一个简单实验。我打开了两个 PUTTY 终端窗口。在每个窗口上,我都执行了ssh root@[ip of machine]。现在,我已经与 Linux 机器建立了 2 个 SSH 会话,我开始进行实验。

在第一个窗口中,我执行了以下操作:

root@localhost:~# unshare --pid /bin/bash
bash: fork: Cannot allocate memory

在第二个窗口中,我执行了以下操作:

root@localhost:~# ps -aux | grep unshare
root       58188  0.0  0.0   6480  2284 pts/3    R+   21:49   0:00 grep --color=auto unshare

以下是我的问题:

  1. 第二个窗口没有显示任何 的迹象unshare --pid /bin/bash。这是因为/bin/bash命令或/bin/bash进程已经终止吗?这就是为什么互联网上许多 Linux 用户建议使用--fork以便/bin/bash运行在新创建的命名空间中?

  2. 接受的答案是这样的:“bash 开始运行后,bash 会 fork 几个新的子进程来做一些事情。”我不明白这句话的意思。所以在第二个终端窗口中,我运行了以下命令:

root@localhost:~# unshare -pf /bin/bash
root@localhost:~# ps -a
    PID TTY          TIME CMD
  58278 pts/2    00:00:00 sudo
  58279 pts/2    00:00:00 su
  58280 pts/2    00:00:00 bash
  58291 pts/2    00:00:00 unshare
  58292 pts/2    00:00:00 bash
  58299 pts/2    00:00:00 ps

PID 58278 到 PID58299 是不是作者所说的“bash 将分叉几个新的子进程来做一些事情”?

process
  • 1 个回答
  • 46 Views
Martin Hope
melonfsck - she her
Asked: 2024-10-05 19:22:30 +0800 CST

为什么中断中的异常总是导致Kernel Panic?

  • 10

如果在为用户进程提供服务(如系统调用或页面调入)的上下文中或在进程中发生内核中的 CPU 异常(如错误的内存访问或无效的操作码),则在设置kthread之前,panic_on_oops有用的信息将被转储,任务将终止。无需惊慌。有时系统仍然完全可用。足以让用户尝试同步磁盘、正常终止程序,并以其他方式为紧急重启做准备。

但不幸的是,如果异常发生在原子上下文中(如中断或软中断),则采取的操作始终是内核恐慌(带有描述"Fatal exception in interrupt")——无论任何设置或构建时配置如何。这很可悲。为什么不能模拟中断返回,并保持系统运行,希望某些部分仍能正常工作?谢谢。

我知道我可以mdelay()在“中断异常”的代码路径中放置一个无限,而不是panic(),这样只会让本地 CPU 停滞。但通常在发生这种情况后就没有什么可以做的事情了……即使机器中有数百个 CPU,它们很快就会全部锁定。所以不是很有用。

process
  • 2 个回答
  • 68 Views
Martin Hope
leetbacoon
Asked: 2024-07-30 09:15:22 +0800 CST

在 --to-command 中获取 GNU tar PID

  • 8

我们有这个 GNU tar 命令,如下所示:

$ tar -xjf /dev/st0 --to-command='sh -c '\''printf "%s\n" "$TAR_SIZE $TAR_REALNAME" >> "$TAR_ARCHIVE.sizes.txt"'\'

有什么方法可以获取tar内部的 PID吗--to-command?例如:

$ [...] --to-command='sh -c '\''printf "%s\n" "$TAR_SIZE $TAR_REALNAME" >> "$TAR_ARCHIVE.sizes. $TAR_PID .txt"'\'

$TAR_PID(请注意结尾处添加的虚构内容)

我阅读了 GNU tar 1.34 的手册页,但没有看到相关变量。

process
  • 2 个回答
  • 494 Views
Martin Hope
Ui Hirazawa
Asked: 2024-06-19 19:43:24 +0800 CST

在alpine镜像的容器中使用超时命令后,会留下一个死进程

  • 5

我使用 alpine 镜像运行了一个容器,并timeout在其中运行了一个命令。timeout命令运行后,alpine 中留下了一个死进程,我无法使用 kill 命令杀死它。我的执行流程如下:运行一个 alpine 容器

# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.20.0
PRETTY_NAME="Alpine Linux v3.20"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"

使用timeout执行命令

# timeout -k 10 5 /bin/sleep 20
Terminated

此后,容器中会留有一个超时的死进程,并且无法通过 kill 将其杀死。

# ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 sleep infinity
   18 root      0:00 sh
   33 root      0:00 [timeout]
   36 root      0:00 ps -ef
# kill -9 33
# ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 sleep infinity
   18 root      0:00 sh
   33 root      0:00 [timeout]
   37 root      0:00 ps -ef

超时版本

# timeout --help
BusyBox v1.36.1 (2024-05-21 13:38:37 UTC) multi-call binary.

Usage: timeout [-s SIG] [-k KILL_SECS] SECS PROG ARGS

Run PROG. Send SIG to it if it is not gone in SECS seconds.
Default SIG: TERM.If it still exists in KILL_SECS seconds, send KILL.
process
  • 1 个回答
  • 23 Views
Martin Hope
lems
Asked: 2024-03-28 08:56:19 +0800 CST

对特定 PID 运行附加命令

  • 5

我对 Linux 完全陌生,所以如果这看起来像是一个荒谬的问题,请原谅我。

我正在尝试在 Firefox 上打开新选项卡,而无需来自终端的 url。所以我的命令是:

$ firefox -new-tab -search foo1

现在,当我尝试再次执行此操作,希望它打开一个新选项卡来搜索新项目时,请说:

$ firefox -new-tab -search foo2

它会打开一个新窗口。所以我有这样的想法,也许如果我可以获得以前浏览器的 PID,我可以在该 PID 上运行新选项卡命令,这样新选项卡实际上会在同一个窗口上打开。如果我运行以下命令,我可以相对轻松地获取 PID:

$ firefox -new-tab -search foo1 </dev/null >/dev/null 2>&1 &

但实际上我完全不知道如何使用 PID 在该 PID 上执行新命令。

任何和所有的意见都值得赞赏。谢谢!

process
  • 1 个回答
  • 30 Views
Martin Hope
Nickotine
Asked: 2023-06-22 08:36:54 +0800 CST

是否有一个命令可以使另一个命令或进程更快地完成?

  • 6

背景

我当时sudo renice -20 -p <pid>认为这会让我的视频转换得更快。

经过测试,它没有任何效果,然后我发现速度与漂亮无关。

问题

是否有一个命令可以通过限制其他进程来允许进程或命令更快地完成?

process
  • 1 个回答
  • 83 Views
Martin Hope
joseph lake
Asked: 2023-06-10 17:03:35 +0800 CST

在处理回收的 PID 时检查 PID 中的 Process is Alive

  • 5

从我在网上看到的情况来看,您在 c++ 中调用 kill 方法是为了查看进程是否存在。问题是 PID 被 rycled 而你寻找的相同 PID 可能不是同一个过程。我有一个程序有两个进程,它们不是彼此的孩子。与他们沟通的唯一方式是IPC。我希望我的主机进程在客户端进程关闭时关闭。为了做到这一点,我必须知道客户的进程何时不再存在。

在 Windows 中,他们有所谓的进程处理程序,它将保留 PID 不被回收,直到创建句柄的进程关闭。我想知道如何在 macOS/Linux (POSIX) 系统上实现这一点。

作为 PID 的有问题的代码被回收。

if (0 == kill(pid, 0))
{
    // Process exists.
}
process
  • 2 个回答
  • 53 Views
Martin Hope
furynerd
Asked: 2023-06-06 15:59:54 +0800 CST

检索标准输出重定向到 /dev/null

  • 5

有没有办法检索重定向到 /dev/null 的标准输出?我试过了tail -f /proc/{PID}/fd/1,除了重定向到/dev/null.

IE

tail -f /proc/${cmd_pid}/fd/1

工作cmd > log.txt但不cmd > /dev/null

- - - - - - 更新 - - - - - -

事实上,log.txt如果总是记录标准输出,我的问题将会非常大。如果我可以控制何时记录或停止日志(而不停止进程cmd本身),那将是最好的。

所以如果可以将标准输出重定向到某个tmp不占用资源的文件系统,当我需要时我可以检索标准输出?

process
  • 3 个回答
  • 65 Views
Martin Hope
Abced Decba
Asked: 2023-04-23 14:55:02 +0800 CST

在 zsh 中运行 tmux 的子进程和兄弟进程

  • 6

我正在使用Ubuntu 22.04.1(WSL 2尽管它只Unix与这个问题相关)

为什么当我们tmux从zsh会话运行时,进程树(我已经有所删节)从

init(Ubuntu)─┬─SessionLeader───Relay(9)─┬─ssh-agent
                                        └─zsh───pstree

到

init(Ubuntu)─┬─SessionLeader───Relay(9)─┬─ssh-agent
                                        ├─tmux: server───zsh───pstree
                                        └─zsh───tmux: client

在这里,pstree只是告诉我进程树的命令,因此它在上面。

当我们运行tmuxin时zsh,发生的事情是zsh运行以创建一个 fork 进程,该进程是(即上面)fork()的子进程。我不确定一个与生成它的进程同级的进程是如何形成的。zshtmux: clienttmux: server

process
  • 1 个回答
  • 15 Views
Martin Hope
Maestro
Asked: 2023-04-18 23:14:51 +0800 CST

后台进程是否有性能损失?

  • 6

如果我做:

sleep 1 

相对

sleep 1 & wait $!

生成前台进程与后台进程的 CPU 使用率会有什么不同吗?还是两条线的性能完全相等?

process
  • 2 个回答
  • 60 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