小编nh2*_*nh2的帖子

是否可以连接到 TCP 端口 0?

侦听 TCP 端口 0 会为我分配一个系统上的空闲端口号。

但是当我尝试连接到 TCP 端口 0时会发生什么?显而易见的答案是:“它不起作用”:

$ nc localhost 0                 
nc: port number too small: 0
Run Code Online (Sandbox Code Playgroud)

这是在系统中的哪个位置处理的?在操作系统内核的 TCP 堆栈中?是否有 Unix 可以连接到 TCP 端口 0?

networking tcp

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

为什么基于取消共享的查杀只能与 --fork 一起可靠地工作?

这个答案中我们了解到,您可以通过 Linux PID 命名空间实现对整个进程子树的可靠终止unshare -p

这是我不明白的问题:

  • 仅当我使用-f/--fork选项取消共享时它才有效。

    unshare -fp -- bash -c "watch /bin/sleep 10000 && echo hi"
    
    Run Code Online (Sandbox Code Playgroud)

    当我运行这个时,kill -9那个的PID bash,然后观看,睡眠等都死了,正如我所希望的那样。

  • 但是当我使用它时没有-f

    unshare -p -- bash -c "watch /bin/sleep 10000 && echo hi"
    
    Run Code Online (Sandbox Code Playgroud)

    kill -9bash PID,然后将其watch重新设置为PID 1(在我的Ubuntu上是systemd),所以我没有达到杀死所有孩子的预期效果。

问题:

  • 为什么--fork必须要达到预期的效果?为什么不unshare使用exec()fork 还不够?
  • 有解决方法吗?我更希望能够方便地发送到通过开始杀死其下面的所有内容kill -9而创建的 PID 。unshare但是当我使用 时--fork,杀死我开始时返回的 pidunshare将简单地杀死unsharebash …

process kill namespace unshare

7
推荐指数
1
解决办法
1885
查看次数

如何使用 systemctl 列出排队的单元?

我的systemctl status节目:

? mymachine
     State: running
     Jobs: 4 queued
Run Code Online (Sandbox Code Playgroud)

我如何列出queued工作?

这个答案显示了如何列出失败的单元,但我找不到关于如何列出这 4 个排队单元的任何文档,我也不清楚哪个状态systemctl list-units --state=help对应于那些。

systemd

7
推荐指数
1
解决办法
8498
查看次数

标签 统计

kill ×1

namespace ×1

networking ×1

process ×1

systemd ×1

tcp ×1

unshare ×1