在 bash 脚本中:
我们通过命名来创建变量:
abc=ok
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用 declare
declare abc=ok
Run Code Online (Sandbox Code Playgroud)
有什么不同?
为什么 bash 有这么多方法来创建变量?
我注意到{可以用于大括号扩展:
echo {1..8}
Run Code Online (Sandbox Code Playgroud)
或在命令分组中:
{ls;echo hi}
Run Code Online (Sandbox Code Playgroud)
bash 如何知道其中的区别?
我想知道 UNIX 信号的安全性。
SIGKILL会杀死进程。那么,当非 root 用户的进程向 root 用户的进程发送信号时会发生什么?进程是否仍然执行信号处理程序?
我遵循公认的答案(gollum 的),然后输入man capabilites,然后我找到了很多关于 Linux 内核的信息。来自man capabilities:
NAME
capabilities - overview of Linux capabilities
DESCRIPTION
For the purpose of performing permission checks, traditional UNIX
implementations distinguish two categories of processes: privileged
processes (whose effective user ID is 0, referred to as superuser or
root), and unprivileged processes (whose effective UID is nonzero).
Privileged processes bypass all kernel permission checks, while
unprivileged processes are subject to full permission checking …Run Code Online (Sandbox Code Playgroud) 我知道这两种机制(我们称它们为 A 和 B)会限制进程的资源。
想知道两人的合作。
如果 A 限制了一个进程的资源,那么当 B 也限制了相同的资源时会发生什么?
我试图理解/usr/sbin/service具有一行代码的经典服务脚本:
exec env -i ...... ${SERVICE} .....
Run Code Online (Sandbox Code Playgroud)
我知道该exec命令不会分叉,并将保留该进程并将进程映像替换为 COMMAND。那么当前的进程就像用命令执行一样。
怎么样的env?它也会像上面那样吗?
为什么替换当前进程比分叉更好?
我想cd到go的bin文件所在目录:
$ type go
go is /c/tools/go/bin/go
Run Code Online (Sandbox Code Playgroud)
如何在 bash 中快速 cd 到这个目录?
当我输入 时ps -ef,会显示许多特殊的内核线程进程。
我对内核线程不感兴趣;我只对用户进程/线程感兴趣。
有没有办法隐藏内核线程?
bash ×3
shell-script ×3
command-line ×1
docker ×1
kernel ×1
linux-kernel ×1
proc ×1
ps ×1
security ×1
signals ×1
ulimit ×1
utilities ×1
variable ×1
vim ×1