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-208590

Rick's questions

Martin Hope
Rick
Asked: 2022-06-07 22:58:18 +0800 CST

如何知道我是否在一个屏幕的屏幕中?

  • 1

我知道如何查看我是否在屏幕中:我创建了一个别名alias inscreen = 'echo $STY'。

但是今天早些时候,我screen在screen没有注意到的情况下不小心输入了 a ,并且在某种程度上它让我后来犯了一个错误。


我在screen(外屏)内输入(内屏)时观察到的事情screen:

  1. screen -ls仅显示与该屏幕相关的 1 个结果
  2. echo $STY内外屏都一样
  3. ctrl + A并且ctrl + D可以从内屏分离到无屏,但是screen -r返回时,内屏和外屏都存在
  4. 现在我可以exit两次:内屏exit-> 外屏exit

所以我的问题是,无论如何我可以知道我在一个屏幕的屏幕中吗?


PS 第一次输入screen时,会弹出一些文字:

在此处输入图像描述

如果screen在 a中输入screen,则不会显示这些提示。

gnu-screen
  • 1 个回答
  • 48 Views
Martin Hope
Rick
Asked: 2022-06-03 22:05:04 +0800 CST

为什么我的 /usr/lib/x86_64-linux-gnu 目录下有 libc.so.6?

  • 1

在阅读了 libc6-dev 和 libc6 之间的这个问题区别后,我启动了一个新的Ubuntu 20.04 LTSVPS 并检查了某些 Ubuntu 软件包中包含哪些文件。

我检查了libc6-dev(https://packages.ubuntu.com/focal/amd64/libc6-dev/filelist)和libc6(https://packages.ubuntu.com/focal/amd64/libc6/filelist)。

正如我们所见,libc6-dev这些共享库位于/usr/lib/x86_64-linux-gnu/和libc6的共享库位于/lib/x86_64-linux-gnu/.

但让我好奇的是:

  1. 我也有libc.so.6 (/usr/lib/x86_64-linux-gnu/)libc.so.6 -> libc-2.31.so*。并且apt install remove libc6-dev不删除libc.so.6. 这libc.so.6是从哪里来的?

  2. packge-rw-r--r-- 1 root root 298 Apr 7 09:24 libc.so安装的libc6-dev只有298字节,什么?为什么?

sudo apt list --installed输出:https
ll -h | grep libc ://pastebin.com/geDjY2z2输出:https ://pastebin.com/UHn5QVt1

ll -h | grep libc输出,左(删除libc6-dev):

文本

linux glibc
  • 1 个回答
  • 1513 Views
Martin Hope
Rick
Asked: 2021-11-02 18:28:19 +0800 CST

什么是 ssh -L 123:farawayhost:456 远程主机?

  • 0

来自这个问题:What's ssh port forwarding and what's the difference between ssh local and remote port forwarding,我对这种用法感到困惑:

ssh -L 123:farawayhost:456 remotehost

ssh -L sourcePort:forwardToHost:onPort connectToHost意思是:使用 ssh 连接到connectToHost,并将所有连接尝试转发到机器上的本地 sourcePort到端口onPort,该机器forwardToHost可以从connectToHost 机器访问。

"..., which can be reach from the connectToHostmachine."是什么意思?究竟是什么意思?

如果我理解正确,ssh -L 123:localhost:456 remotehost是上述命令的特定情况,两者farawayhost都remotehost在同一台机器上。

那么何时farawayhost和何时remotehost不在同一台机器上,它是如何工作的呢?这是否意味着我需要先登录remotehost然后再登录farawayhost?

ssh
  • 1 个回答
  • 68 Views
Martin Hope
Rick
Asked: 2020-03-04 23:09:59 +0800 CST

什么是惰性交换预留?

  • 1

我正在阅读Linux 编程接口。

49.9 MAP_NORESERVE 和交换空间过度使用

一些应用程序创建大型(通常是私有匿名)映射,但只使用映射区域的一小部分。例如,某些类型的科学应用程序分配一个非常大的数组,但只对数组中几个相隔很远的元素(所谓的稀疏数组)进行操作。

如果内核总是为整个此类映射分配(或保留)足够的交换空间,那么可能会浪费大量的交换空间。相反,内核可以仅在实际需要时(即,当应用程序访问页面时)为映射的页面保留交换空间。这种方法称为惰性交换保留,其优点是应用程序使用的总虚拟内存可以超过 RAM 加上交换空间的总大小。

换句话说,惰性交换保留允许过度使用交换空间。只要所有进程不尝试访问其映射的整个范围,这就可以正常工作。...

据我所知,交换空间是磁盘中的一块空间,保留用于内存交换。当内存中的这些页面处于非活动状态时,它们会被交换到磁盘中的交换空间中。它就像内存/内存的二级缓存。

那么这个惰性交换预留机制到底是什么鬼?

让我用一个例子来说明我的困惑。

  1. 一些应用程序创建大型(通常是私有匿名)映射......

好的,然后假设我malloc有一个大数组16384(4096*4)字节(创建大型(通常是私有匿名)映射),并且只对数组中几个广泛分离的元素进行操作。

然后一些非活动页面被交换到交换空间,对吗?假设0-4095(4096B),8192-12287(4096B)在内存中,所有其他非活动页面4096-8191(4096B),12288-16383(4096B)被交换到交换空间中。

那么这句话是什么意思:

相反,内核可以仅在实际需要时(即,当应用程序访问页面时)为映射的页面保留交换空间。

如果不留在交换空间4096-8191(4096B)中,这些非活动页面(和)还能留在哪里?文本似乎表明交换空间存在 3 级缓存。 12288-16383(4096B)

memory -> swap space (disk) -> ????

swap mmap
  • 2 个回答
  • 589 Views
Martin Hope
Rick
Asked: 2019-11-15 20:48:52 +0800 CST

为什么telnet被认为是一种协议?它不只是一个简单的 TCP 发送/回显程序吗?

  • 11

这更像是一个概念问题。我需要一些澄清。


今天我在学习一些套接字编程的东西,并根据Beej 的网络编程指南编写了一个简单的聊天服务器和聊天客户端。(聊天服务器接收客户端消息并将消息发送给所有其他客户端)

我复制了 聊天服务器并编写了自己的聊天客户端。

聊天客户端只是一个stdin向服务器发送输入并从服务器打印套接字数据的程序。

后来我注意到指南说我可以telnet用来连接到服务器。我试过了,它奏效了。


我对telnet不熟悉,很长一段时间我都不知道它到底是什么。

所以现在我的经历让我感到困惑:

telnet 不就是一个简单的 TCP 发送/回显程序吗?是什么让成为协议的东西如此特别?我的哑聊天客户端程序没有创建 [应用程序] 协议。

来自维基百科Communication_protocol:

在电信中,通信协议是一个规则系统, 它允许通信系统的两个或多个实体通过物理量的任何类型的变化来传输信息。

Telnet 创建什么规则?telnet host port,为原始输入/输出打开一个 TCP 流套接字?这不是规则。

tcp
  • 5 个回答
  • 5277 Views
Martin Hope
Rick
Asked: 2019-08-15 01:47:56 +0800 CST

如何查看命令的信息?[复制]

  • 0
这个问题在这里已经有了答案:
如何从命令行查找应用程序的路径? (5 个回答)
3年前关闭。

如果我错了,请纠正我:

如果我没记错的话,终端中的命令链接到文件系统/磁盘中的特定可执行文件(或者也允许脚本?)。

例如,python运行 python2.7 和python3运行 python3。

现在的问题是我使用相同的终端命令安装了 2 个软件包。

pip install packageA
pip3 install packageA

他们都有指挥权packageACommand run。所以我想检查当前的packageACommand命令信息,看看它使用的是哪个 python/什么环境。

通常,我想知道如何查看命令的(元)信息?就像检查它在幕后实际做了什么/链接了什么?

command
  • 1 个回答
  • 37 Views
Martin Hope
Rick
Asked: 2019-06-27 02:53:56 +0800 CST

为什么 ssh 指纹现在以 base64 格式而不是十六进制格式给出?

  • 4

我看到一个老问题表明,当ssh连接到服务器时,会显示一个十六进制指纹。

为什么现在是以base64格式给出的?有什么好处?

我知道MD5它坏了,现在默认是sha256,但是对于指纹格式,base64 编码和十六进制字符串是/表示相同的东西。那么改变格式有什么好处呢?

ssh
  • 1 个回答
  • 4473 Views
Martin Hope
Rick
Asked: 2019-04-10 00:00:10 +0800 CST

POSIX 程序员手册 vs Linux 程序员手册

  • 7

我想看看pthread_mutex_trylock.

通过打字man pthread_mutex_trylock,我得到了No manual entry for pthread_mutex_trylock。

然后我看到一个帖子建议做sudo apt-get install manpages-posix manpages-posix-dev。

之后,我看到如下描述:

PTHREAD_MUTEX_LOCK(3POSIX)                               POSIX Programmer's Manual                              PTHREAD_MUTEX_LOCK(3POSIX)

PROLOG
       This manual page is part of the POSIX Programmer's Manual.  The Linux implementation of this interface may differ (consult the cor‐
       responding Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux.
  1. 这本POSIX 程序员手册和我平时看到的Linux 程序员手册有什么区别?

  2. 说什么是什么意思:

该接口的 Linux 实现可能不同(有关 Linux 行为的详细信息,请参阅相应的 Linux 手册页),或者该接口可能未在 Linux 上实现。

那么我在哪里可以找到 Linux 实现的联机帮助页?我可以在我的系统上使用吗?我正在使用 Ubuntu。 pthread_mutex_trylockpthread_mutex_trylock

man
  • 2 个回答
  • 2352 Views
Martin Hope
Rick
Asked: 2019-04-02 22:13:30 +0800 CST

当一个被另一个中断时,两个(≥2)信号处理程序执行顺序?

  • 2

假设我为andmain注册了 2 个信号处理程序,比如说and 。运行时信号到达时会发生什么?SIGUSR1SIGUR2sig_ur1sig_ur2SIGUR2sig_ur1

sig_ur1运行---->信号SIGUR2到达---->:

  1. sig_ur1继续运行 ->sig_ur1完成 ->sig_ur2开始运行 ->sig_ur2完成 -> 返回main

  2. sig_ur2开始运行 ->sig_ur2完成 -> 返回main

  3. sig_ur2开始运行 ->sig_ur2完成 ->sig_ur1恢复(变量sig_ur1离开时保持相同的值) ->sig_ur1完成 -> 返回main

  4. sig_ur2开始运行 ->sig_ur2完成 ->sig_ur1重新启动(再次初始化所有变量) ->sig_ur1完成 -> 返回main

哪个选项是正确的?或者两者都不正确?我没有找到任何谈论这个的文章/帖子,所以提供任何相关的材料/链接将不胜感激。:)

signals
  • 1 个回答
  • 286 Views
Martin Hope
Rick
Asked: 2019-03-29 22:57:55 +0800 CST

什么是中断的系统调用?

  • 9

我正在阅读APUE,而中断的系统调用一章让我感到困惑。

我想根据本书写下我的理解,请指正。

  1. 早期 UNIX 系统的一个特点是,如果进程在“慢”系统调用中被阻塞时捕获到信号,则系统调用会被中断。系统调用返回错误并 errno设置为EINTR。这是在假设发生信号并且进程捕获它的情况下完成的,很有可能发生了一些应该唤醒阻塞的系统调用的事情。

    所以说早期的UNIX 系统有一个特性:如果我的程序使用系统调用,它会被中断/停止,如果程序在任何时候捕捉到一个信号。(默认处理程序也算作捕获吗?)

    例如,如果我有一个read读取 10GB 数据的系统调用,当它读取时,我发送任何一个信号(例如kill -SIGUSR1 pid),然后read会失败并返回。


  1. 为了防止应用程序不得不处理中断的系统调用,4.2BSD 引入了自动重启某些中断的系统调用。自动重新启动的系统调用是ioctl、read、readv、write、writev、wait和waitpid。正如我们所提到的,前五个函数只有在运行速度较慢的设备时才会被信号中断。wait并且waitpid 总是在捕捉到信号时被中断。由于这会导致一些应用程序在操作中断时不希望重新启动操作,因此 4.3BSD 允许进程在每个信号的基础上禁用此功能。

所以在引入自动重启之前,我必须自己处理中断的系统调用。我需要编写如下代码:

中断系统调用的问题是我们现在必须明确地处理错误返回。典型的代码序列(假设一个读取操作并假设我们想要重新启动读取,即使它被中断)将是:

again:
    if ((n = read(fd, buf, BUFFSIZE)) < 0) {
        if (errno == EINTR)
        goto again; /* just an interrupted system call */
        /* handle other errors */
}

但是现在我不用写这种代码了,因为有自动重启机制。


因此,如果我的理解都是正确的,那么我现在应该关心什么/为什么要关心中断的系统调用..?似乎系统/操作系统会自动处理它。

signals system-calls
  • 2 个回答
  • 38423 Views
Martin Hope
Rick
Asked: 2019-03-26 18:37:27 +0800 CST

telnet BBS 是如何工作的?

  • 0

我知道telnet与ssh.

telnet我在我的 VPS 上打开了该服务并成功使用telnet.

远程登录telnet也是如此,但是那些“telnet BBS”是如何工作的?似乎我正在查看网页而不是以系统用户身份登录。

telnet
  • 1 个回答
  • 143 Views
Martin Hope
Rick
Asked: 2019-03-17 09:09:32 +0800 CST

Unix 登录程序/命令有什么作用?

  • 0

我正在阅读APUE,它一直在引用该login程序,但我仍然不知道它在我的操作系统(Ubuntu)中做了什么。

§8.11:

通常情况下,真正的用户 ID 是login(1)在我们登录时由程序设置的,并且永远不会更改。因为login是超级用户进程,所以在调用setuid的时候设置了所有三个用户ID

ps aux | grep login:

root       840  0.0  0.0  70732  6120 ?        Ss   15:13   0:00 /lib/systemd/systemd-logind
root      1120  0.0  0.0 419680  9468 ?        Sl   15:13   0:00 gdm-session-worker [pam/gdm-autologin]
tianhe    1151  0.0  0.1 445184 20540 ?        SLl  15:13   0:05 /usr/bin/gnome-keyring-daemon --daemonize --login
tianhe   10838  0.0  0.0  21536  1060 pts/0    S+   21:50   0:00 grep --color=auto login

login简而言之,该程序为操作系统提供了哪些功能?

在什么情况下使用或运行?

顺便说一句,与之login相比如何ssh?

command login
  • 2 个回答
  • 1086 Views
Martin Hope
Rick
Asked: 2019-03-08 20:07:40 +0800 CST

为什么每次有人执行 `ls -l` 命令时都会使用 /etc/passwd?

  • 27

读自APUE,只是好奇:

每次用户登录到 UNIX 系统以及每次有人执行ls -l命令时都会使用密码文件。

passwd ls
  • 1 个回答
  • 3147 Views
Martin Hope
Rick
Asked: 2019-02-24 05:22:12 +0800 CST

测试标准输入是否能够搜索时的问题

  • 2

我颠倒了 中的陈述if/else,现在更正了。


我正在阅读来自UNIX® 环境中的高级编程的代码片段:

该程序测试其标准输入以查看它是否能够搜索。

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(void){

    if(lseek(STDIN_FILENO,0, SEEK_CUR) == -1)
        printf("cannot seek\n");
    else{
        printf("seek ok\n");
    }
}

我编译并运行它(在 下Ubuntu 18.04.2 LTS)但不理解以下行为。

//1
$ ./a.out 
cannot seek

//2
$ ./a.out < /etc/passwd
seek OK

//3
$ cat < /etc/passwd | ./a.out
cannot seek

//4
$ ./a.out < /var/spool/cron/FIFO
cannot seek

为什么//1是cannot seek?空stdin应该可以求我想。是因为stdin还没开吗?因为我听说正常stdin,stdout并且stderr在程序开始运行时打开。

为什么//2可以,//3不可以?我认为他们是一样的。

api
  • 1 个回答
  • 723 Views
Martin Hope
Rick
Asked: 2019-02-22 06:45:50 +0800 CST

“同步 I/O 是否可以与关联文件一起使用”是什么意思?

  • 0

来自UNIX® 环境中的高级编程:

对于_PC_ASYNC_IO、_PC_PRIO_IO和_PC_SYNC_IO,引用的文件不能是目录。

Name of option   |   Indicates ...                          |name argument
_POSIX_SYNC_IO   |whether synchronized I/O can be used with |_PC_SYNC_IO
                  the associated file

所以我假设用法是
long return_value = pathconf("/a/path/filename",_PC_SYNC_IO).

看起来这是一种获取特定文件“设置”的方法。

这个东西可以设置成文件吗?我该如何设置?

同步 I/O对文件意味着什么?我的意思是,我不明白同步 I/O如何成为文件的设置?它不应该是编程方面的事情,而不仅仅是“设置”吗?

files
  • 1 个回答
  • 40 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