如果 Unix 系统遇到包含符号链接循环或太多符号链接的路径,它们通常只会出错,因为它们对在一次路径查找中将遍历的符号链接数量有限制。但是有没有办法真正确定给定的路径是否解析为某些内容或包含循环,即使它包含的链接多于 unix 愿意遵循的链接?或者这是一个形式上不可判定的问题?如果可以决定,是否可以在合理的时间/内存量内决定(例如,不必访问文件系统上的所有文件)?
一些例子:
a/b/c/d
where a/b is a symlink to ../e
and e is a symlink to f
and f is a symlink to a/b
a/b/c/d
where a/b/c is a symlink to ../c
a/b/c/d
where a/b/c is a symlink to ../c/d
a/b/c/d
where a/b/c is a symlink to /a/b/e
where a/b/e is a symlink to /a/b/f
where a/b/f is a symlink to /a/b/g
Run Code Online (Sandbox Code Playgroud)
编辑:
澄清一下,我不是在问在文件系统中查找循环,而是在问一种决策算法,该算法决定给定的路径是解析为确定的文件/目录还是根本不解析。例如在下面的系统中,有一个循环,但给定的路径仍然可以正常解析:
/ -- a -- b
where b is a symlink to …
Run Code Online (Sandbox Code Playgroud) 如何在不同的现有 systemd 会话或范围中运行命令?
据我所知,就进程在其中一个或另一个而言,会话和会话的范围单元之间没有区别。
出现这个问题是因为在 Gnome 中,从终端运行的命令被视为 的一部分gnome-terminal-server.service
,而不是session-xx.scope
. 如果我想在我的会话中(或在另一个会话中)运行命令,我该怎么做?
(注意:这与这个问题相反,它要求围绕现有流程创建一个新的范围。)
Xorg 的“VESA”驱动程序和“fbdev”驱动程序之间有什么区别?两者都没有硬件加速 afaik