是否有 Unix/Linux 等效的Process Monitor,无论是 GUI 还是 CUI?
如果它有所作为,我正在研究 Ubuntu,但如果其他系统(Mac、Fedora 等其他 Linux 变体等)有等价物,那么了解其中任何一个也很有用。
Process Monitor用于监视系统调用(例如文件创建或写入),而 Process Explorer用于监视进程状态(类似于 System Monitor)。我要的是前者,不是后者。:-)
我如何正确地for以相反的顺序进行循环?
for f in /var/logs/foo*.log; do
bar "$f"
done
Run Code Online (Sandbox Code Playgroud)
我需要一个不会因文件名中的时髦字符而中断的解决方案。
来自 Windows 世界,我发现大多数文件夹目录名称都非常直观:
\Program Files 包含程序使用的文件(惊喜!)
\Program Files (x86) 包含 64 位操作系统上 32 位程序使用的文件
\Users(以前Documents and Settings)包含用户的文件,即文档和设置
\Users\USER\Application Data 包含特定于应用程序的数据
\Users\USER\Documents 包含属于用户的文档
\Windows 包含属于 Windows 本身操作的文件
\Windows\Fonts 存储字体文件(惊喜!)
\Windows\Temp 是一个全局临时目录
等等。即使我不知道这些文件夹做了什么,我也可以从它们的名字中准确地猜测出来。
现在我正在仔细研究 Linux,并且对如何绕过文件系统感到非常困惑。
例如:
/bin包含二进制文件。但也是如此/sbin,/usr/bin, /usr/sbin, 可能还有更多我不知道的。哪个是哪个??它们之间有什么区别?如果我想制作一个二进制文件并将它放在系统范围内的某个地方,我应该把它放在哪里?
/media包含外部媒体文件系统。但也是如此/mnt。目前它们都没有在我的系统上包含任何内容;一切似乎都在/dev。有什么不同?哪里是我的硬盘的其他分区,像C:和D:那名在Windows?
/home包含用户文件和设置。这是直观的,但是,应该进入/usr什么?为什么/root仍然是分开的,即使它是一个拥有文件和设置的用户?
/lib包含共享库,如 DLL。但也是如此/usr/lib。有什么不同?
什么是 /etc?它真的代表“et cetera”还是其他什么意思?什么类型的文件应该放在那里——全局的还是本地的?对于没有人知道放在哪里的东西,它是一个包罗万象的东西,还是有一个特定的用例?
什么是/opt,/proc和/var …
是否可以将环回文件挂载为只读,并将所有写入重定向到 RAM?
当我按 TAB 时,有没有办法让 BASH 填充第一个匹配项,有点像 Windows 命令提示符?
(它仍应显示匹配项列表,但当我继续按 Tab 键时,它应循环显示匹配项。)
即这里的目标是能够填补任何匹配与仅TAB键,给予足够的印刷机-就像在Windows中。
我今天很忙,这是另一个问题:
为什么当我把这些放进去时.inputrc,它们都做同样的事情?
TAB: menu-complete
Shift-TAB: menu-complete-reverse
Run Code Online (Sandbox Code Playgroud)
即他们都做最后一个说的。
我有一个程序需要一个-o log_file选项,它将额外的数据写入log_file.
我有什么办法可以将它重定向到标准输出吗?
即是否有标准输出的“特殊名称”可以用作文件名,就像CONOUT$在 Windows 上一样?
我希望能够使用一些 SSH 密钥从本地网络 (192.168.1.*) 登录到(可公开访问的)SSH 服务器,但我不希望该密钥可从本地网络外部使用。
我希望将其他一些密钥用于外部访问(两种情况下都是同一用户)。
在SSH中可以实现这样的事情吗?
当我跑
aria2c https://www.example.com
Run Code Online (Sandbox Code Playgroud)
我得到
02/24 15:33:38 [WARN] aria2c had to connect to the other side using an unknown TLS protocol. The integrity and confidentiality of the connection might be compromised.
Run Code Online (Sandbox Code Playgroud)
为什么是这样?请注意,这不是特定于www.example.com; 它发生在许多(如果不是所有)主机上。
作为参考,这是(已编辑的)日志:
[INFO] [Context.cc:182] aria2 1.34.0
[INFO] [Context.cc:183] gcc 8.2.1 20181127
built by x86_64-pc-linux-gnu
on Feb 8 2019 09:32:06
[INFO] [Context.cc:185] zlib/1.2.11 libxml2/2.9.9 sqlite3/3.26.0 GnuTLS/3.6.6 nettle GMP/6.1.2 c-ares/1.15.0 libssh2/1.8.0
[INFO] [Context.cc:186] Logging started.
[DEBUG] [Context.cc:216] Not setting rlimit NO_FILE: 1024 >= 1024
[NOTICE] [Context.cc:311] Downloading 1 item(s) …Run Code Online (Sandbox Code Playgroud) sudo 除非我已经是 root 用户,否则需要在系统范围内进行更改的程序。
现在,问题是:系统究竟是如何确定我是(不是)root 的?
可以:
检查我是否在特定组中?如果是这样,我需要加入哪个组?
检查 root 本身的众所周知的 ID(即“root 用户”被硬编码到源中)?
如果是这样,如果我的 root 帐户被损坏会发生什么?我是否会被迫重新安装操作系统,因为无法创建另一个具有 root 权限的帐户?
根据某些文件的内容检查我的名称/组并授予正确的权限?如果是这样,哪个文件包含此信息?
做点别的?如果是这样,它有什么作用?
linux ×4
bash ×3
aria2 ×1
autocomplete ×1
command-line ×1
control-flow ×1
debian ×1
fhs ×1
filesystems ×1
gnutls ×1
monitoring ×1
networking ×1
process ×1
readline ×1
readonly ×1
root ×1
security ×1
shell ×1
software-rec ×1
ssh ×1
ssl ×1
sudo ×1
ubuntu ×1
users ×1
wildcards ×1
zsh ×1