首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle中的PGA监控报警分析二(r12笔记第87天)

重启问题1 因为应用设置了自动重连,为了让这个问题处理得更平滑下,整个重启的过程本来以为会很快,但是却接二连三的碰到了不少的小问题。 首先就是一系列fork错误。我干了什么呢?...就是shutdown immediae 然后startup 这么一个操作本身有问题吗,显然没有,但是启动数据库之后,我在另外一个窗口中使用su - oracle切换的时候却抛出了下面的错误。...大体是这两类: # su - oracle -bash: fork: retry: Resource temporarily unavailable -bash: fork: retry: Resource...temporarily unavailable ^C-bash: fork: retry: Resource temporarily unavailable 或者 # su - oracle su:...我想这个问题在很长的一段时间里都不会再出现了。

1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从进程组、会话、终端的概念深入理解守护进程

    /helloworld &方式后台运行,当连接终端的网络出现问题,那么也会导致运行程序中断。这些因素对于长期运行的服务来说很不友好,而「守护进程」可以很好的解决这个问题。...1、创建子进程,父进程退出 进程 fork 后,父进程退出。...这么做的原因有 2 点: 如果守护进程是通过 Shell 启动,父进程退出,Shell 就会认为任务执行完毕,这时子进程由 init 收养 子进程继承父进程的进程组 ID,保证了子进程不是进程组组长,因为后边调用...这时子进程 2 不再是会话组长,无法再打开终端。其实这一步骤不是必须的,不过加上这一步骤会显得更加严谨。...6、关闭文件描述符 子进程会继承已经打开的文件,它们占用系统资源,且可能导致所在文件系统无法卸载。此时守护进程与终端脱离,常说的输入、输出、错误描述符也应该关闭。

    1.1K20

    【Linux系统编程】通过系统调用获取进程标识符 及 创建子进程(fork)

    其次,我们发现上面每次运行起来进程的父进程都是bash,所以,结论2: 命令行启动的所有程序,最后变成进程其对应的父进程都是bash(也有特殊情况,我们目前先不考虑)。...那为什么bash启动的程序,最终生成的进程它们的父进程都是bash呢?...我们kill之后会发现bash就不能正常工作了 那出现这种情况的话我们把xshell关掉重新登陆就行了。 bash创建子进程去帮它执行命令,那下一个问题,如何创建子进程呢? 3....而我们的代码里只打印了一次,但是它前面有一个fork的调用 为什么会这样呢?...失败的话,-1在父进程中返回,不会创建任何子进程,并且正确设置了errno(C语言中一个用于表示错误码的全局变量,Linux内核是C语言写的)。 也就是说fork成功的话,返回值会有两个。

    43210

    【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)

    本章主要内容面向接触过Linux的老铁 主要内容含: 一.前置知识——pid和ppid 1.系统调用接口查看pid,ppid pid:当前进程 ppid:父进程 每一次启动的进程, 系统会重新生成...——bash命令行解释器与bash进程 当我们运行一个进程时,命令行解释器会把这个指令解释成bash的子进程 接着再由这个bash的子进程执行对应的命令 当这个子进程出现问题时,并不影响bash的进程...即:每一条命令被执行,都属于bash的子进程 我们执行一段代码,parent对应的是getppid()函数; 我们接着用ps+grep过滤指令查看这个16815进程,发现其就是bash进程...二.fork( )函数原理与应用详解 1.fork()函数基本介绍 fork(): 创建子进程 返回值给 【父进程返回子进程PID,给子进程返回0】 2.fork()返回值有两个:——>变成了两个进程...返回不同的返回值,是为了 区分 为了让fork以后的if判断while等,来让父子进程执行 不同 的代码片段 4.为什么fork要给子进程返回0,给父进程返回子进程pid?

    2.5K10

    一次 Docker 容器内大量僵尸进程排查分析

    什么情况下会出现僵尸进程、孤儿进程 Puppeteer 工作过程启动的进程与线上事故分析 PID 为 1 的进程有什么特殊的地方 为什么 node/npm 不应该作为镜像中 PID 为 1 的进程 为什么...打开 iTerm,在终端中执行一个命令,比如 "ls",实际上系统会创建新的 iTerm 子进程,这个 iTerm 进程又创建了 zsh 子进程。...对应于进程,父进程退出时,子进程会继续运行,不会一起共赴黄泉。 一个父进程已经终止的进程被称为孤儿进程(orphan process)。...使用 bash 启动 node 或者 npm 增加专门的 init 进程,比如 tini 解决方式一:使用 bash 启动 node 让 bash 成为顶层进程是比较快的一种方式,bash 进程会负责回收僵尸进程...,而且之前线上没有出问题正是因为一开始是使用这种 bash 方式启动 node,后面有一个小兄弟为了统一启动命令将这个命令改为 npm run start,问题才出现的。

    1.9K40

    LWP进程资源耗尽,Resource temporarily unavailable

    然而当切换到xjjbot账户,则会报以下错误: # sudo su - xjjbot bash: fork: retry: no child processes bash: fork: retry: no...child processes bash: fork: retry: no child processes bash: fork: retry: no child processes bash: fork...Linux的线程其实是一个进程,所以java的也是,具体来说,叫做“light weight process(LWP)”—轻量级进程。...LWP与其它进程共享所有(或大部分)逻辑地址空间和系统资源,一个进程可以创建多个LWP,这样它们共享大部分资源;LWP有它自己的进程标识符,并和其他进程有着父子关系;。...LWP由内核管理并像普通进程一样被调度 使用以下命令可以看到某个用户使用了多少进程资源 ps -eLf | grep xjjbot(uid) | wc -l 使用下面命令可以查看具体每个进程开启了多少线程

    3.1K10

    进程的概念与基础操作详解

    bash就是命令行解释器 ,每启动一个XShell就会有一个bash进程启动,所以输入的指令等信息都是通过父进程bash处理的,所以当使用命令行启动多个进程后可以发现它们的父进程(PPID)都是bash...监控和调试:对于系统管理员和开发者来说,通过查看cwd可以了解进程是在哪个目录下运行的,这对于调试程序(特别是当程序试图访问文件时出现路径错误等问题)和监控进程行为非常有用。...得到的运行结果如下: 可以看出,在fork();执行后出现了两个进程,其中一个进程的pid是fork前的进程的pid,一个是新进程的pid。此时就成功的创建了子进程。但是要如何使用fork()呢?...在子进程中,fork() 返回 0。 创建子进程失败返回-1。 为什么 **fork()** 有两个返回值? 操作系统在执行 fork() 时,会基于当前父进程的状态,创建一个几乎完全相同的子进程。...具体地说,当 fork() 被调用时,操作系统会执行以下步骤,从而使父进程和子进程完全独立: 进程复制的时机 **fork()**** 的调用时刻**:操作系统在执行 fork() 时,会基于当前父进程的状态

    14410

    详解僵尸进程与孤儿进程

    当一个父进程退出,而他有若干子进程仍然在执行,那么,这些子进程就变成了孤儿进程。它们会自动被共同的祖先 -- init 进程收养,从而自动完成它们的状态收集工作。...4.2 忽略 SIGCHLD 信号 父进程也可以显式忽略子进程的结束信号,系统会自动释放子进程资源而避免使子进程成为僵死进程。...4.4 fork 两次 在建立子进程时,使用 2 次 fork,让所建立的子进程成为父进程的孙子进程,而实际中的子进程则随即推出,和第三条相同,由于孙子进程的父进程已经退出,所以在孙子进程会被自动过继给守护进程...启动的进程,然后所有其他进程都作为这个进程的子孙,孤儿进程就会自动被 Bash 进程过继。...也会因为错误地判断了进程的执行状态而执行错误的重启策略,因为在 docker 看来,ENTRYPOINT 进程永远都是正常退出的,因为它返回了 0。

    2K20

    nodejs写bash脚本终极方案!

    为了弥补这些错误,我们学会在脚本开头加入:set -u这句命令的意思是脚本在头部加上它,遇到不存在的变量就会报错,并停止执行。...但是,如果命令成功运行并将消息写入标准错误流,则该stderr对象不会为空。...命令的api spawn:启动一个子进程来执行命令 exec:启动一个子进程来执行命令,与spawn不同的是,它有一个回调函数能知道子进程的情况 execFile:启动一子进程来执行可执行文件 fork...# 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。 if (shell.exec('git commit -am "Auto-commit"').code !...nothrow方法,如果bash命令出错,可以包裹在这个方法里忽略错误 ◆ 完整中文文档(在下翻译水平一般,请见谅) #!

    3.9K20

    Linux系统编程:理解进程进程管理

    ,分配的PID都不一样,但是父进程PPID是一样的,其实都是Bash进程; 之后,我重新启动了机器!...结论:Bash(命令行)是机器启动时就创建好的进程,直至关机PID都不会变 !...6.6fork语句之前的语句是否还会执行? 答案是不会,但是会发生拷贝到子进程中! 按照推测"执行此处"只会打印一次 为什么出现了两次"执行此处"呢?...,因此出现了两次"执行此处",并不是子进程执行了printf语句; 下面我们加上\n 父进程会自动把"执行此处"从缓冲区中刷新,而子进程是不会执行fork之前的语句的,所以只打印了一次"执行此处"!...; 6.7通过fork理解Bash命令行工作 前面我们知道我们使用的指令本质也是写好的可执行程序,执行的时候就是一个进程; 而他们的父进程都是Bash,因此Bash的工作就是创建子进程执行指令,而不是

    5100

    故障分析:从Oracle数据库故障到Linux nproc算法

    墨墨导读:本文来自墨天轮用户“你好我是李白”的投稿,使用root用户切换grid用户时报错-bash: fork: retry: Resource temporarily unava,这里记录故障处理全过程...墨天轮主页:https://www.modb.pro/u/3997 某日,朋友跟我讨论他巡检oracle数据库时遇到的一个情况,在使用root用户切换grid用户时报错-bash: fork: retry...故障背景 巡检su – grid无法完成切换,报错 -bash: fork: retry: Resource temporarily unavailable。...的限制 系统可用内存低,新的进程无法申请到内存导致不能启动 下面我们一步一步排查: 检查用户已经存在进程limits设置与用户ulimit设置,检查如下: 如果已经有会话登陆grid用户,可以通过下面命令得到当前限制...注:真实情况下,由于内核版本不同,相关参数可能发生变化,也由于启动时,内存分配不同,会导致计算出来与实际值存在一些偏差,但是偏差不会很大。 4. 那使用内存计算的nproc是硬限制吗?

    1.2K10

    短小精干的Unix类后门Tiny shell的使用与分析

    设置的伪装的进程名字 所以这里要修改一下可执行文件名字 然后再运行一下,执行lsof -i:8080 发现COMMAND变成了bash,这样迷惑性会更大一些 将后门文件移动至 /usr/sbin (当然也可移动到其他隐秘的地方...IP: 10.1.100.3, kali系统) /usr/sbin/bash 注: 服务端运行后,其父进程PID是1,也就是说这个进程是守护进程除非重启系统,或者手动关闭,否则一直存在(当然你也可以加入启动项...进程 解释一下反弹shell之后,这里为什么会又出现一个守护进程(也就是pid为3147的进程) 回到最开始 执行后门 /usr/sbin/bash 执行之后,主进程会fork一个子进程(上面已经提到)...,父进程退出,这样fork出来的子进程就会成为孤儿进程被init托管(也就是pid为3048的进程) 当PID 为3048的这个进程成功连接上控制端监听的端口之后,则又fork一个进程用(姑且称之为子进程...2)于处理建立好的连接(tshd.c代码 211行开始) 子进程2 又会新fork一个子进程(称之为子进程3),然后子进程2退出,子进程3成为孤儿进程,被init托管,成为守护进程,子进程3是真正用户处理连接后的交互

    5.9K51

    docker的reap问题

    在使用docker容器的时候,应该了解“PID1僵尸进程reap”问题。如果使用的时候不加注意,可能会导致出现一些意想不到的问题。...为避免产生僵尸进程,实际应用中一般采取的方式是: 将父进程中对SIGCHLD信号的处理函数设置SIG_IGN fork两次并杀死一级自进程,令二级子进程成为孤儿进程而被init所“收养”、清理 与docker...这里讨论的init系统是一个简单的程序,负责fork出应用程序,并且reap收养的进程。 解决办法 bash 是否已经有现成,流行的软件可以做到这一点呢?还真有,这就是bash。...bash会正确地reap收养的子进程。bash可以执行任何程序。...对bash发送一个SIGTERM信号,bash会终止,但是并不会发送SIGTERM给其子进程。 当bash程序终止时,内核会停止整个容器和其中的进程。一些进程会接收到SIGKILL信号,不正确地终止。

    1.2K30

    nodejs 写 bash 脚本终极方案!

    为了弥补这些错误,我们学会在脚本开头加入:set \-u 这句命令的意思是脚本在头部加上它,遇到不存在的变量就会报错,并停止执行。...但是,如果命令成功运行并将消息写入标准错误流,则该stderr对象不会为空。...命令的api spawn:启动一个子进程来执行命令 exec:启动一个子进程来执行命令,与spawn不同的是,它有一个回调函数能知道子进程的情况 execFile:启动一子进程来执行可执行文件 fork...# 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。 if (shell.exec('git commit -am "Auto-commit"').code !...nothrow方法,如果bash命令出错,可以包裹在这个方法里忽略错误 完整中文文档(在下翻译水平一般,请见谅) #!

    2.6K20

    100个Linux命令(7)-进程管理

    例如在bash下执行cp命令,会先fork出一个bash,然后再exec加载cp程序覆盖子bash进程变成cp进程。...在当前bash环境下,处于可运行状态(即就绪态)时,当执行cp命令时,首先fork出一个bash子进程,然后在子bash上exec加载cp程序,cp子进程进入等待队列,由于在命令行下敲的命令,所以优先级较高...进程结构和子 shell 前台进程 一般命令(如 cp 命令)在执行时都会fork子进程来执行,在子进程执行过程中,父进程会进入睡眠,这类是前台进程。...bash命令本身是bash内置命令,在当前shell环境下执行内置命令本不会创建子shell,也就是说不会有独立的bash进程出现,而实际结果则表现为新的bash是一个子进程。...(4)执行非bash内置命令:例如执行cp命令、grep命令等,它们直接fork一份bash进程,然后使用exec加载程序替代该子bash。此类子进程会继承所有父bash的环境。

    1.7K20

    Web Terminal 预备知识

    gnome-terminal 会 fork 一个 shell 子进程,并让 shell 持有 PTY slave 的设备文件 /dev/pts/[n],shell 通过 PTY slave 接收字符,并输出处理结果...我们在桌面启动终端程序 gnome-terminal,它向操作系统请求一个PTY master,并把 GUI 绘制在显示器上 gnome-terminal 启动子进程 bash bash 的标准输入、标准输出和标准错误都设置为...注意,bash 在启动时已经将标准输入被设置为了PTY slave bash 解释从输入读取的字符,发现需要运行 ls bash fork 出 ls 进程。...让 ssh server 持有 PTY master,ssh server fork 出的子进程 bash 持有 PTY slave。...bash fork 出 ls 子进程,该子进程的标准输入、标准输出和标准错误同样设置为了 PTY slave。

    1.5K20

    【Linux】进程间关系与守护进程

    除了会给每个用户分配一个终端文件以外,每个用户也会启动自己的bash进程,每当有新的用户连接时,机会分配一个新的bash:   我们前面说了,一个会话是包含多个进程组的,为了验证这个事实,我们创建两个进程组...在上面的例子中,我们除了看到这两个进程组是属于同一个会话以外,如果你仔细观察,会发现他们5个进程的ppid都是bash,而bash又作为第一个终端下启动的进程,所以正常情况下一个会话的会话id实际上就是...注意:   这个接口如果调用进程原来是进程组组长, 则会报错, 为了避免这种情况, 我们通常的使用方法是先调用 fork 创建子进程, 父进程终止, 子进程继续执行, 因为子进程会继承父进程的进程组...ID, 而进程 ID 则是新分配的, 就不会出现错误的情况。...控制终端是保存在 PCB 中的信息,我们知道 fork 进程会复制 PCB中的信息,因此由 Shell 进程启动的其它进程的控制终端也是这个终端。

    12510

    理解Linux 终端、终端模拟器和伪终端

    gnome-terminal 会 fork 一个 shell 子进程,并让 shell 持有 PTY slave 的设备文件 /dev/pts/[n],shell 通过 PTY slave 接收字符,并输出处理结果...我们在桌面启动终端程序 gnome-terminal,它向操作系统请求一个PTY master,并把 GUI 绘制在显示器上 gnome-terminal 启动子进程 bash bash 的标准输入、标准输出和标准错误都设置为...注意,bash 在启动时已经将标准输入被设置为了PTY slave bash 解释从输入读取的字符,发现需要运行 ls bash fork 出 ls 进程。...让 ssh server 持有 PTY master,ssh server fork 出的子进程 bash 持有 PTY slave。...bash fork 出 ls 子进程,该子进程的标准输入、标准输出和标准错误同样设置为了 PTY slave。

    50810

    初识Linux · 进程(3)

    \n"); } 代码本身是没有什么错误的,但是打印出来的时候,会发现打印出来并不是一个父进程一个子进程的打印,因为子进程会执行父进程后面的代码,所以也会执行这个死循环,从而导致子进程创建子进程,变成了指数级别的增长.../test,每个进程的pid都是会变化的) 那么什么是bash呢? 当我们运行: 就会有bash提示你说,./是个目录,无法运行。 其实bash就是命令行解释器,我们刚才运行的....根据前面的代码我们知道,子进程会继承父进程后面的所有代码,但是我们创建子进程就是为了执行后面的代码吗?父进程也可以执行啊,为什么要创建呢?...在fork的函数体内,已经创建了子进程,所以会返回两份id,因为父进程也会进入fork函数,那么有了两份id,至于为什么会有“两份”,埋个伏笔~ 所以得出结论,子进程的创建是用来干其他事情的,不是用来干和父进程一样的事情的...因为创建成功了,会返回0给子进程,那么我们可以让这个子进程进入到一个函数体里面再也出不来,也就不会导致子进程创建子进程的情况了: 5 void Run() 6 { 7 while(1)

    5510
    领券