我刚刚开始学习 Unix 的基础知识,想知道为什么在类似 Unix 的系统中有这么多 shell。来自Unix 环境中的高级编程一书:
shell 是一个命令行解释器,它读取用户输入并执行命令。shell 的用户输入通常来自终端(交互式 shell)或有时来自文件(称为 shell 脚本)。
然后本书继续列出了一些 shell 程序,如 Bourne shell、Bourne-again shell、Cshell 等。我的问题基本上是为什么我们需要多个外壳?
我发出了ps -ef|grep java命令,这是我得到的条目之一:
subhrcho 875 803 0 Jan23 pts/5 00:02:27 [java] <defunct>
Run Code Online (Sandbox Code Playgroud)
这里是什么<defunct>意思?该进程是 PID=875 的进程是什么状态?
有人可以解释 Unix 中的 set-user-ID 机制吗?这个设计决定背后的理由是什么?它与有效的用户 ID 机制有何不同?
这是ls -all命令的输出:
-rwxr----- 1 subhrcho dba 3600 Nov 13 17:26 jdev
-rw-r----- 1 subhrcho dba 1566 Nov 13 17:26 jdev-Darwin.conf
-rw-r----- 1 subhrcho dba 347 Mar 6 2009 jdev-debug.boot
-rw-r----- 1 subhrcho dba 821 Nov 13 17:26 jdev-logging-debug.conf
-rw-r----- 1 subhrcho dba 584 Nov 13 17:26 jdev-logging.conf
-rw-r----- 1 subhrcho dba 4717 Jul 31 16:09 jdev.boot
-rw-r----- 1 subhrcho dba 12877 Nov 13 17:26 jdev.common
-rw-r----- 1 subhrcho dba 5047 Dec 6 01:43 jdev.conf
-rwxr-x--- 1 subhrcho dba …Run Code Online (Sandbox Code Playgroud) 来自Unix Power Tools,第 3 版:不是删除文件,而是清空它部分:
如果活动进程打开了该文件(对于日志文件来说并不少见),则删除该文件并创建一个新文件不会影响日志记录程序;这些消息只会继续发送到不再链接的文件中。清空文件不会破坏关联,因此它会在不影响日志记录程序的情况下清除文件。
(强调我的)
我不明白为什么程序会继续登录到已删除的文件。是不是因为文件描述符条目没有从进程表中删除?
我已经完成了这个问题的答案,但不太明白系统调用和库函数之间的区别。从概念上讲,两者有什么区别?
我们可以发出CTRL+Z暂停 Unix 中的任何作业,然后使用fg或使它们恢复生机bg。我想了解那些像这样被暂停的工作会发生什么?他们被杀死/终止了吗?换句话说,杀死和暂停进程有什么区别?
可能的重复:
执行 shell 脚本的不同方式
当我发出以下命令时会发生什么:
source devenv.csh
Run Code Online (Sandbox Code Playgroud)
它与运行它有什么不同devenv.csh?
我有多个条目描述了一个非常大的日志文件中的事件,比如A.log。我想对日志文件中的事件条目做两件事:
一个典型的事件条目如下所示,它们之间会有其他文本。所以在下面的例子中有两个事件条目,第一个包含两个DataChangeEntry 有效载荷,第二个包含一个DataChangeEntry 有效载荷。
Data control raising event :DataControl@263c015d[[
#### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator]
Filter/Collection Id : 0
Collection Level : 0
Sequence Id : 616
ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49
==== DataChangeEntry (#1)
ChangeType : UPDATE
KeyPath : [2014-06-26 06:15:00.0, 0]
AttributeNames : [DATAOBJECT_CREATED, COUNTX, QueryName]
AttributeValues : [2014-06-26 06:15:00.0, 11, StrAvgCallWaitTimeGreaterThanThreshold]
AttributeTypes : [java.sql.Timestamp, java.lang.Integer, java.lang.String, ]
==== DataChangeEntry (#2)
ChangeType : UPDATE
KeyPath …Run Code Online (Sandbox Code Playgroud) process ×4
command ×3
architecture ×2
shell ×2
shell-script ×2
awk ×1
command-line ×1
executable ×1
files ×1
grep ×1
jobs ×1
libraries ×1
logs ×1
open-files ×1
privileges ×1
ps ×1
sed ×1
setuid ×1
signals ×1
system-calls ×1
terminology ×1