📄 00000005.htm
字号:
Subject: How can I find out which user or process has a file open ... ? <BR>Date: Thu Mar 18 17:16:55 EST 1993 <BR> <BR>4.8) 我要如何得知有哪些 process 开了某一档案,或某一 process 正在使用哪 <BR> 一个 fileystem(以至於我无法 unmount 这个 filesystem)? <BR> <BR> 你可以用 fuser(system V),fstat(BSD),ofiles(public domain) 或是 pff <BR> (public domain)。这些程式可以告诉你哪些 processes 正在使用哪些档案。 <BR> <BR> 4.3BSD 的 fstat,有一份 Dynix,SunOS 与 Ultrix 都可以用的 port。你可以 <BR> 找找放 comp.sources.unix, volume 18的地方。 <BR> <BR> Pff 是 kstuff 这套软体的一部分,很多系统上都可以用。欲取得 kstuff 请参 <BR> 考问题 3.10。 <BR> <BR>------------------------------ <BR> <BR>Subject: How do I keep track of people who are fingering me? <BR>><I>From: <A HREF="mailto:jik@cam.ov.com">jik@cam.ov.com</A> (Jonathan I. Kamens) </I><BR>><I>From: <A HREF="mailto:malenovi@plains.NoDak.edu">malenovi@plains.NoDak.edu</A> (Nikola Malenovic) </I><BR>Date: Thu, 29 Sep 1994 07:28:37 -0400 <BR> <BR>4.9) 我要怎麽知道是谁在 finger 我啊? <BR> <BR> 一般来说,你是无法找出在远端机器 finger 你的那个人的 userid 的。你大概 <BR> 只能找出在从哪台机器 finger 的。另外有一种可行的方法,如果你的系统支援 <BR> 并且假设 finger daemon 不反对的话,那麽可以把你的 .plan 档用 "named <BR> pipe" 而不用一般的文字档。(用 'mknod' 来造) <BR> <BR> 接下来,你执行一个程式去写(open for writing)你的 .plan 档;但是由於 <BR> 你的 .plan 是一个 "named pipe",所以这个开档的动作要一直等到有其他的 <BR> process 去读(open for reading)你的 .plan 档时才会成功。现在你就可以 <BR> 任意地把你所想让人 finger 到的 .plan 内容写入这个 pipe。在 <BR> comp.sources.misc, volumn 41 中有个 "planner" 的程式可以做这件事。 <BR> <BR> 当然,如果你的系统不支援 "named pipe",或是你所用的 finger 程式只接受 <BR> 纯文字的 .plan 档,那麽以上的方法就行不通了。 <BR> <BR> 你的程式也可以藉由查看 "netstat" 的输出,来找出这次的 finger 是从那里 <BR> 连过来的,但是这并无法看出远端执行 finger 的人是谁。 <BR> <BR> 想要知道远端的人是谁,必须要远端的机器有跑支援如 RFC 931 的识别程式才 <BR> 行。 <BR> <BR> 现在,在常见的 BSD 系统上就有三种 RFC 931 的实做程式,同时也有许多的 <BR> 应用程式(如 wuarchive ftpd)支援。如果你想得到更多有关 RFC 931 的资 <BR> 讯,可以加入 rfc931-user 的 mailing list, <BR> rfc931-users-<A HREF="mailto:request@kramden.acf.nyu.edu。">request@kramden.acf.nyu.edu。</A> <BR> <BR> 另外还有三个注意事项。第一,有许多的 NFS 系统无法正确地处理 "named <BR> pipe"。这个意思是,当你要去读放在另一部机器上的 pipe 时,可能会被系统 <BR> block 住直到time out,或是因为 pipe 的档案长度是 0 所以系统就不把它的 <BR> 内容列出来。 <BR> <BR> 第二,在许多的系统中,fingerd 会在读 .plan 档之前先去检查它里面是否真 <BR> 的有资料并且是可以读的。这样就会造成远端 finger 你的人根本就看不到你 <BR> 的 .plan 档,因为你的 .plan 长度是 0。 <BR> <BR> 第三,支援 "named pipe" 的系统通常在同一个时间里只允许系统中存在某个固 <BR> 定数目的 pipes,检查 kernel 的 config 档和 FIFOCNT 选项即可得知。如果 <BR> 系统中的 pipe 数目超过了 FIFOCNT,那麽系统就会暂停所有新的 pipe 直到有 <BR> 人关掉他先前所开的 pipe。这是因为 pipe 所用到的 buffer 是放在 <BR> non-paged 的记忆体中。 <BR> <BR>------------------------------ <BR> <BR>Subject: Is it possible to reconnect a process to a terminal ... ? <BR>Date: Thu Mar 18 17:16:55 EST 1993 <BR> <BR>4.10) 能不能在一个 process 和 terminal 的连接已经断掉之後再接回来,例如 <BR> 在 background 跑一个程式然後就 logout 而断掉的程式? <BR> <BR> 大部份版本的 Unix 都不像 VMS 和 Multics 等作业系统支援 "detaching" 和 <BR> "attaching" process。不过,有两个免费的软体能够帮你达成这个目的。 <BR> <BR> 第一个是 "screen",在 comp.sources.unix 中的标题是 "Screen, multiple <BR> windows on a CRT"。(你可以在 comp.sources.misc, volumn 28 中发表的 <BR> "screen-3.2" 中找到)这个软体在 BSD,System V r3.2 及 SCO UNIX 皆可执 <BR> 行。 <BR> <BR> 第二个是 "pty",在 comp.sources.unix 中的标题是 "Run a program under <BR> a pty session"。(可以在 volumn 23 发表的 "pty" 中找到)"pty" 只能在 <BR> BSD 的系统中执行。 <BR> <BR> 以上这两个软体都没有溯及既往的能力,也就是说,你如果想对某个 process <BR> 做 detach 或 attach 的动作,那麽就必须要先在 screen 或 pty 下启动它才 <BR> 行。 <BR> <BR>------------------------------ <BR> <BR>Subject: Is it possible to "spy" on a terminal ... ? <BR>Date: Wed, 28 Dec 1994 18:35:00 -0500 <BR> <BR>4.11) 有没有办法可以偷听一个 terminal,就是说将其输出复制一份至其他的 <BR> terminal。 <BR> <BR> 有几种方法可以达成这个目的,不过没有一个是完美的: <BR> <BR> * kibitz 允许两个(或更多)的人透过 shell(或其他的程式)彼此沟通。 <BR> 它的用途有: <BR> <BR> - 监视或援助令一人的terminal session; <BR> - 记录所有的输出入以用来能卷页回去,储存整个输出入,甚至是可 <BR> 以直接编辑它。 <BR> - 当团队合作时,如制作 game、撰写文件等工作,每个人都各有所长 <BR> 各有所短,就可用此种方式彼此互补。 <BR> <BR> kibitz 是 'expect' 软体的一部份,请查看问题 3.9。 <BR> <BR> kibitz 需要有被监视人的同意才能进行。如果想不取得同意就进行监视,那就 <BR> 得用一些比较令人讨厌的方法了: <BR> <BR> * 你可以自己写一个程式去搜查整个 kernel 的结构,监视 terminal 所用的 <BR> output buffer,然後把它所输出的字全抓下来。很明显的,这是熟悉 Unix <BR> kernel 的人才可能做得到的。但是,不论你是用什麽方法大概都无法 <BR> 拿到其他的 Unix 去用。 <BR> <BR> * 如果你是想要随时监视一个特定、实际拉线连上的 terminal(例如,你想让 <BR> 管理者能够从其他机器的终端机查看某部机器的 console),那你可以乾脆 <BR> 接一台监视器在通往那台 terminal 的线上。举例来说,把你的监视器的输 <BR> 出接到另一台机器的 serial port,然後执行一个程式去收集那个 port 的 <BR> 输入并把它转到另一个 port 去,而这个 port 就真的连到你所要监视的 <BR> terminal 去。这样做的话,你必须确定从该 terminal 来的输出会随著线传 <BR> 回去,即使你只是插接在电脑和 terminal 的中间,这并不会太难做到。 用 <BR> 这个方法,对 terminal 布线不太熟悉的人是无法发觉的。 <BR> <BR> * 在最近一版的 screen 中有一种 multi-user 模式可以用。若想多了解一 <BR> 点 screen,请看问题 4.10。 <BR> <BR> * 如果你所使用的系统有提供 stream(如 SunOS,SVR4)那麽你可以使用 <BR> 发表在 comp.sources.misc, volumn 28 中的 advise 程式。它并不需要先 <BR> 执行。(但是,你必须要事先把你的系统设定成在开启 tty 或 pty 时会自 <BR> 动把 advise 模组放入 stream 中。) <BR> <BR>------------------------------ <BR> <BR>End of unix/faq Digest part 4 of 7 <BR>********************************** <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -