我正在研究shell脚本,当一个语句被识别为长时间运行时,我们必须在OS上获取PID,确保它不是程序的主要进程。(例如:Oracle)。检查顶部并终止匹配的进程,稍后我们可以使用脚本检查数据库是否存在长时间运行的会话。杀死程序的特定长时间运行的PID后,shell脚本需要向用户发送邮件信息。
[oracle@jumbox ]$ps au |grep oracle | awk 'print {$2}' |uniq
10020
15678
17345
18736
18856
我的问题是我没有看到top命令中列出的任何上述过程,那么我应该如何验证脚本中的这些非现有进程?或者是否有更好的一个班轮或代码片段可以做到这一点?任何建议都非常感谢。
由于
答案 0 :(得分:0)
从服务器中杀死一个会话是非常危险的,它可能导致数据模糊,甚至表中的行不可读。通过在<xsl:template match="OAuth">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<xsl:element name="ng3:OAuth">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:element>
</soap:Body>
</soap:Envelope>
</xsl:template>
视图中检查相同内容,可以更好地终止长时间运行的会话。在这里,您可以检查会话是否处于非活动状态或等待另一个会话完成。
要使用v$session
来终止会话,可以在alter system kill session 'sid,serial#' immediate;
视图中找到sid和serial#。要获取会话的服务器PID,您可以使用此查询查询v$session
和v$process
个视图:
v$session