“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。
当我运行这个公认的愚蠢yes&
命令时,我无法中断它。终端崩溃或陷入循环。
我希望该yes
进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。
“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。
当我运行这个公认的愚蠢yes&
命令时,我无法中断它。终端崩溃或陷入循环。
我希望该yes
进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。
当 Linux 系统休眠并从休眠中恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?
起初,我以为GRUB(或其他引导加载程序)通过内核参数告诉内核。但是只要我查看/proc/cmdline,内核参数就和平时一样了。内核是否有任何机制知道它正在恢复?
也许我今天还没有喝足够的咖啡,但我不记得或想不出为什么/proc/PID/cmdline
应该是世界可读的——毕竟,/proc/PID/environ
不是。
使其只能由用户(当然也可能是组和 root)可读,可以防止作为命令行参数输入的密码被随意暴露。
当然,它会影响其他用户的运行ps
等等htop
——但这是一件好事,对吧?那将是不使其具有世界可读性的关键。
我不明白,为什么我需要E010 bashate rule。
我使用bashate来检查.sh
文件。E010 规则:
不要与for在同一行
for
重击:
正确的:
#!/bin/bash
for f in bash/*.sh; do
sashacommand "$f"
done
错误:
#!/bin/bash
for f in bash/*.sh
do sashacommand "$f"
done
是否有任何有效的论点,为什么我需要for
和do
在同一行?
我在以下位置找不到我的问题的答案:
bashate 文档。我发现只有:
一组有助于在控制块中保持一致的规则。这些在有延续的长行中被忽略,因为展开那是一种“有趣”
我是 unix 系统的新手,发现在设置文件(如.bashrc
和.inputrc
.
但是,我不明白两者之间的区别。例如,当我创建别名时,我将它们放入.bashrc
.
Example 1: alias ...='cd ../../'
当我创建使用箭头键查找上一个或下一个命令等操作时,我将命令放入.inputrc
.
Example 2: "\e[A": history-search-backward
为什么我需要将它们放在不同的设置文件中?如何区分什么时候放什么?
先感谢您!
我看到很多人在网上参考
arch/x86/entry/syscalls/syscall_64.tbl
对于系统调用表,它工作正常。但是很多人参考
/include/uapi/asm-generic/unistd.h
这通常在 headers 包中找到。syscall_64.tbl
节目怎么来,
0 common read sys_read
正确的答案,并unistd.h
显示,
#define __NR_io_setup 0
__SC_COMP(__NR_io_setup, sys_io_setup, compat_sys_io_setup)
然后它显示__NR_read
为
#define __NR_read 63
__SYSCALL(__NR_read, sys_read)
为什么是 63,而不是 1?我如何理解 out of /include/uapi/asm-generic/unistd.h
?/usr/include/asm/
里面还有
/usr/include/asm/unistd_x32.h
#define __NR_read (__X32_SYSCALL_BIT + 0)
#define __NR_write (__X32_SYSCALL_BIT + 1)
#define __NR_open (__X32_SYSCALL_BIT + 2)
#define __NR_close (__X32_SYSCALL_BIT + 3)
#define __NR_stat (__X32_SYSCALL_BIT + 4)
/usr/include/asm/unistd_64.h
#define __NR_read 0
#define __NR_write 1
#define __NR_open 2
#define __NR_close 3
#define __NR_stat 4
/usr/include/asm/unistd_32.h
#define __NR_restart_syscall 0
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
unistd
有人可以告诉我这些文件之间的区别。解释如何unistd.h
工作?查找系统调用表的最佳方法是什么?
我正在运行全新安装的 CentOS 7 GNOME,因此我可以从 Windows 进行 RDP。我按照“通过 XRDP 连接到 GNOME 桌面环境”的说明进行操作,但是当我连接时,我得到一个额外的登录信息,上面写着
authentication is required to create a color profile
如何删除这个额外的登录?
为了解决这个问题,我 在“Griffon's IT Library”尝试了一个解决方案,但它不起作用,因为链接不仅仅是解决这个问题的方法。我在下面粘贴了解决方案。
当您通过远程会话登录系统时,您将看到此消息弹出。您可以简单地取消,您将能够继续,直到您下次登录并开始新的会话。
为避免出现此提示,我们需要更改 polkit 配置。
02-allow-colord.conf
使用管理员权限,在以下目录下创建一个名为的文件/etc/polkit-1/localauthority.conf.d/
该文件应包含 [原文如此] 以下说明,并且在远程进入系统时不应再提示您此类身份验证请求
polkit.addRule(function(action, subject) { if ((action.id == “org.freedesktop.color-manager.create-device” || action.id == “org.freedesktop.color-manager.create-profile” || action.id == “org.freedesktop.color-manager.delete-device” || action.id == “org.freedesktop.color-manager.delete-profile” || action.id == “org.freedesktop.color-manager.modify-device” || action.id == “org.freedesktop.color-manager.modify-profile”) && subject.isInGroup(“{group}”)) { return polkit.Result.YES; } });
假设我登录到 unix 系统上的 shell 并开始敲击命令。我最初从用户的主目录开始~
。我可能会从那里cd
下到目录Documents
。
这里更改工作目录的命令非常简单直观地理解:父节点有一个它可以访问的子节点列表,并且大概它使用搜索的(优化的)变体来定位子节点的存在用户输入的名称,然后“更改”工作目录以匹配此 - 如果我在那里错了,请纠正我。甚至更简单的是,shell 只是“天真地”尝试完全按照用户的意愿访问目录,并且当文件系统返回某种类型的错误时,shell 会相应地显示响应。
然而,我感兴趣的是,当我向上导航目录时,相同的过程是如何工作的,即到父级或父级的父级。
鉴于我未知的,可能是“盲”的位置Documents
,可能是整个文件系统树中具有该名称的多个目录之一,Unix 如何确定我接下来应该放在哪里?它是否参考pwd
并检查了它?如果是,如何pwd
跟踪当前的导航状态?
我知道程序有两个“级别”:用户空间和内核空间。
我的问题是:我只想查看内核程序,或者更好:内核空间上的程序。
这种方法正确吗?
ps -ef|grep "\["
root 1 0 0 20:23 ? 00:00:00 init [4]
root 2 0 0 20:23 ? 00:00:00 [kthreadd]
root 3 2 0 20:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 20:23 ? 00:00:00 [kworker/0:0H]
root 7 2 0 20:23 ? 00:00:06 [rcu_sched]
root 8 2 0 20:23 ? 00:00:00 [rcu_bh]
root 9 2 0 20:23 ? 00:00:00 [migration/0]
root 10 2 0 20:23 ? 00:00:00 [migration/1]
root 11 2 0 20:23 ? 00:00:00 [ksoftirqd/1]
root 13 2 0 20:23 ? 00:00:00 [kworker/1:0H]
root 14 2 0 20:23 ? 00:00:00 [migration/2]
....
可用空间:
thufir@dur:~$
thufir@dur:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 794M 9.8M 785M 2% /run
/dev/mapper/ubuntu--vg-root 220G 37G 173G 18% /
tmpfs 3.9G 35M 3.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop0 42M 42M 0 100% /snap/docker/171
/dev/loop1 84M 84M 0 100% /snap/core/3440
/dev/loop3 17M 17M 0 100% /snap/ubuntu-make/116
/dev/loop4 232M 232M 0 100% /snap/vuze-vs/2
/dev/loop6 17M 17M 0 100% /snap/ubuntu-make/109
/dev/loop7 84M 84M 0 100% /snap/core/3247
/dev/loop8 128K 128K 0 100% /snap/hello-world/27
/dev/loop2 77M 77M 0 100% /snap/drakon/1
/dev/sda1 511M 4.6M 507M 1% /boot/efi
tmpfs 794M 16K 794M 1% /run/user/121
/dev/loop9 17M 17M 0 100% /snap/ubuntu-make/123
tmpfs 794M 2.2M 792M 1% /run/user/1000
/home/thufir/.Private 220G 37G 173G 18% /home/thufir
thufir@dur:~$
快照图像为 100%。这是一个问题吗?如果是这样,解决方案是什么?