小编pet*_*erh的帖子

如果多线程 Linux 进程收到信号会发生什么?

如果 Unix (Posix) 进程接收到信号,信号处理程序将运行。

在多线程进程中它会发生什么?哪个线程接收信号?

在我看来,信号 API 应该被扩展来处理(即信号处理程序的线程应该能够被确定),但是在网上寻找信息我只在 linux 内核邮件列表和上发现了长达一年的火焰不同的论坛。据我了解,Linus 的概念不同于 Posix 标准,首先构建了一些兼容层,但现在 Linux 遵循 posix 模型。

目前的状态是什么?

linux signals posix multithreading

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

我更改了主机名,为什么我的 bash PS1 提示未更改?

我通过编辑 /etc/hostname 更改了我的主机名,并且可以使用hostnamehostname -F命令查看新的主机名。

但是 shell 提示仍然显示旧的主机名。

顺便说一下,这是 Ubuntu 11.0.4。提示设置在我.bashrc没有编辑的我。注销甚至重新启动都没有效果。

标准 Ubuntu 的相关部分.bashrc

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Run Code Online (Sandbox Code Playgroud)

($debian_chroot 在我登录时未设置...)

我猜主机名是由特殊字符 \h 获取的。

这是 shell 中报告的 PS1 设置:

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

这是 PS1 显示的内容:

username@oldhostname:~$ 
Run Code Online (Sandbox Code Playgroud)

我使用沃伦回答中的确切命令重复了这个过程。事实证明,主机名在重新启动之前一直有效,但随后它就会丢失,即使/etc/hostname包含新的主机名。

bash ubuntu hostname

23
推荐指数
2
解决办法
3万
查看次数

Unix 中的 sort 命令与数字排序

我有文件 1:

"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"
Run Code Online (Sandbox Code Playgroud)

我想要的文件 2:

"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"
Run Code Online (Sandbox Code Playgroud)

基本上数字排序的file1。

sort

23
推荐指数
4
解决办法
5万
查看次数

有没有开源工具来衡量cpu性能?

我曾多次ab用于测量 Web 性能、hdparm测量硬盘性能和netperf测量网络性能。

但是我没有找到任何测量cpu性能的工具。

您知道可以测量 CPU 性能的工具吗?我更具体地希望测量 Gflops。

linux performance opensource-projects

22
推荐指数
1
解决办法
2万
查看次数

如何从 gpg2 私钥中删除密码?

是的,我知道这是进入一个不太安全的系统的一步,但当前的设置使它合理(密钥并不重要,但签名必须自动化)。

谷歌结果是这样说的:

  1. 用 a 列出键 gpg --list-keys
  2. 用 a 编辑密钥 gpg --edit-key C0DEEBED....
  3. gpg 命令行控制台启动,有一个passwd命令更改密码
  4. 两次输入密码(在我的情况下,简单输入)会更改密钥。

但是,它不起作用,因为 gpg2 根本不允许空密码。

该怎么办?

gpg

20
推荐指数
3
解决办法
2万
查看次数

使用 git 来管理 /etc?

我正在考虑一个系统,在/etc远程 git 存储库中跟踪的位置。我正在考虑 git 工作流程,其中每个主机都有一个不同的分支。

每台机器上的每个以前的版本都可以轻松跟踪、比较和合并。

如果/etc必须在多台机器上提交修改,则可以通过一些合并脚本轻松完成。

如果发生“不需要的”/etc更改,这可能很明显(甚至可以调整警报脚本以查看)。

有人用过这样的配置吗?它有任何安全问题吗?

configuration git

19
推荐指数
2
解决办法
6544
查看次数

如何仅在 bash 中的上一个命令不成功后才运行命令?

我们使用 && 运算符在前一个完成后运行命令。

update-system-configuration && restart-service
Run Code Online (Sandbox Code Playgroud)

但是只有当上一个命令不成功时我如何运行命令?

例如,如果我必须更新系统配置并且失败了,我需要向系统管理员发送邮件吗?

编辑:拜托,这不是控制运算符的重复问题。这将帮助专门搜索此内容的用户,我知道对控制运算符的回答也将回答此问题,但是专门搜索如何处理不成功命令的人将无法直接到达那里,否则我会在问这个问题之前到达那里题。

bash shell-script

19
推荐指数
2
解决办法
5万
查看次数

如何在 Linux 上找到未挂载分区的大小?

我正在使用 tune2fs,但它以块为单位提供数据,我无法获得分区总大小的确切值。

我也使用过fdisk -l /dev/mmcblk0p1,但从这里得到的大小也是不同的值。

如何找到确切的分区大小?

linux

17
推荐指数
3
解决办法
1万
查看次数

如何使 tmpfs 仅使用物理 RAM 而不是交换?

如何确保tmpfs文件系统只能处理物理而不使用磁盘上的交换分区?

由于我有一个较慢的 HDD 和一个快速的 RAM,我希望至少优先考虑 RAM 使用swap和/tmpfs或禁用tmpfs相关挂载点的磁盘使用。

swap tmpfs ram

16
推荐指数
1
解决办法
9285
查看次数

如何让 systemd 在启动时不启动系统服务?

我不想删除该服务,我只想避免它在启动时启动。我仍然需要稍后手动启动它的选项(使用systemctl start <service>命令)。

我尝试使用systemctl disable <service>. 它不起作用,因为它删除了服务。

还有另一种可能。在其服务文件中,

[Install]
#WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

可以被注释掉(然后,systemctl daemon-reload)。它适用于我自己的服务,因为他们的服务文件是我写的。

但是,属于分发的服务文件位于/lib/systemd/system. 该目录中的文件由操作系统管理,即它们将被更新覆盖,系统的其他部分可能假定这些文件未修改,等等。简单地编辑系统文件/etc是一种不好的做法,我不想这样做。我不想在我的/lib.

该怎么办?

systemd

15
推荐指数
2
解决办法
1万
查看次数