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

《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用

第七章 shell的交互功能 学习目的 ​ 让学生了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用方式。...学习要求 了解:shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行 理解:管道和重定向,环境变量和系统变量以及变量引用方式; 掌握: 输入输出重定向的使用和命令组合...概念和原理 7.1 shell的功能与分类 7.1.1 shell的定义 ​ Linux操作系统由内核、shell、文件系统和一些实用程序构成。...Shell是指“为使用者提供操作界面”的软件,通常指的是命令行界面的解析器。 Shell 是连接用户和 Linux 内核的程序,它不仅是Linux系统与用户之间的桥梁,还是一种程序设计语言。...的扩展) ▪ tcsh (csh 的扩展) ▪ Public Domain Korn shell(pdksh, ksh 的扩展) 7.2 shell的启动与执行 7.2.1 shell的启动 ▪ Linux

27210

Linux信号处理机制

停止进程:停止进程不同于终止进程,终止进程是进程已经死亡,但是停止进程仅仅是使进程暂停,将进程的状态设置成TASK_STOPPED,一旦收到恢复执行的信号,进程还可以继续执行。...恢复进程的执行:和停止进程相对应,某些信号可以使进程恢复执行。 如果想要自定义信号处理逻辑,可以使用signal/sigaction函数接口来设置信号处理函数。...严格说来,内核也设有上限,挂起信号的个数也不能无限制地增大,因此只能说,在一定范围之内,可靠信号不会被丢弃。 信号未决状态是指 从生成信号到信息处理逻辑执行的这段时间。...常见的Linux信号如下(可以通过命令kill -l查看): SIGHUP 1 终端挂起或控制进程终止。当用户退出Shell时,由该进程启动的所有进程都会收到这个信号,默认动作为终止进程。...SIGTERM 15 程序结束信号,可以由 kill 命令产生。与SIGKILL不同的是,SIGTERM 信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。

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

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    但是会处理收到的SIGHUP(1)和SIGINT(2)。 shell会将这些信号传给shell脚本程序来处理,而shell脚本的默认行为是忽略这些信号。...1.中断进程 Ctrl+c会生成SIGINT信号。会发送给当前在shell中运行的所有进程。 2.暂停进程 在进程运行时暂停进程,无需终止它。让程序继续保留在内存中,并能从上次停止的位置继续运行。...16.1.3 捕获信号 也可以不忽略信号,在信号出现时捕获它们并执行相应命令。 trap命令允许你来指定脚本要监看并从shell中拦截的linux信号。...16.4 作业控制 重启停止的进程需要向其发送一个SIGCONT信号。 启动、停止、终止、恢复作业这些功能统称为作业控制 16.4.1 查看作业 jobs命令允许查看shell当前正在处理的作业。...anacron不会处理执行时间需求小于一天的脚本 16.6.3 使用新的shell启动脚本 如果每次运行脚本的时候都能够启动一个新的bash shell,将会非常的方便。

    3K61

    Docker 容器命令:解析容器化应用程序的运行时

    这意味着用户可以在容器中执行命令,查看和修改容器中的文件和目录,以及与容器中的应用程序交互。...镜像的历史记录可能会丢失,这是因为 docker commit 命令只会保存容器的当前状态,而不会包含容器的历史记录。...docker start 命令用于启动一个被停止的容器。启动容器后,容器将恢复到停止前的状态,容器中的所有进程将继续执行。...4.2.25 阻塞容器进程 docker wait 命令用于阻塞当前进程,直到指定的容器停止运行或发生错误。...然后,docker wait 命令等待 my-container 容器的退出,并阻塞当前进程。当容器执行完成并退出时,docker wait 命令返回容器的退出码,并解除进程的阻塞状态。

    34630

    csapp 第八章 异常控制流 读书笔记

    停止:进程的执行被挂起(suspended),且不会被调度。...init进程的PID=1,是在系统启动时由内核创建的,它不会终止,是所有进程的祖先。一个进程可以通过调用waitpid函数来等待它的子进程终止或者停止。...3.从键盘发送信号 Unix shell 使用作业(job)这个抽象概念来表示对一条命令行求值而创建的进程。在任何时刻,至多只有一个前台作业和0个或多个后台作业。...8.5.4 阻塞和解除阻塞信号 Linux提供阻塞信号的隐式和显式机制 隐式阻塞机制:内核默认阻塞任何当前处理程序正在处理信号类型的待处理的信号。...ps -h 是 ps 命令的一个选项,它的作用是隐藏 ps 命令输出中的标题行。这意味着当你使用 ps -h 命令时,你只会看到进程信息,而不会看到默认的标题行。

    35560

    Linux - 请允许我静静地后台运行

    而在 shell 脚本中,我们会发现运行 setsid 的进程会一直阻塞住,直到 command 进程执行结束。...或 source 命令由终端执行 setsid; 其他 除了上面介绍的命令,还有 screen 和 tmux 等会话工具,他们都有自己的一套规范,也比较复杂,掌握本文的命令已经足够你驰骋 linux 进程控制了...使用它,我们可以暂停正在占用终端的进程而不停止它,从而让我们使用终端命令来操作此进程。 bg bg是 backgroud 的缩写,顾名思义,bg %id 把作业放到后台进程中执行。...结合 ctrl+z 和 bg 命令,我们可以解决上面提出的第一个问题,不停止地将正在占用终端的进程放到后台执行。 fg fg 与 bg 相对,使用它可以把作业放到前台来执行。...守护进程 守护进程(daemon)是生存期较长的一种进程,一般在系统启动时启动,系统关闭时停止,没有控制终端,也不会输出。如我们的服务器、fpm 等进程就是以守护进程的形式存在的。

    1.7K50

    python之调用系统命令 原

    >>> 3 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息。...Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。...如果参数shell设为true,程序将通过shell来执行。 参数cwd用于设置子进程的当前目录。 参数env是字典类型,用于指定子进程的环境变量。...return -1 使用commands.getstatusoutput方法 这个方法也不会打印出cmd在linux上执行的信息。这个方法唯一的优点是,它不是一个阻塞的方法。...操作 说明 备注 execl(path) 运行一个程序来替代当前进程,会阻塞式运行 _exit(n) 退出程序 startfile(filename) 用与文件关联的程序运行,关联程序打开后,立即返回

    2.3K40

    %99的人都不知道的Docker技巧:优雅的终止容器

    而在容器被停掉的时候,微服务需要即时从服务发现模块中注销自己,以防止从API Gateway而来的请求被错误的路由到了已经被停止掉的微服务。...而docker kill命令,更像是Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。...接下来我们可以写一个简单的Go程序来实现信号的接收与处理,程序在启动过后,会一直阻塞并监听系统信号,直到监测到对应的系统信号后,输出控制台并退出执行。...CMD [“/graceful”] 使用 CMD [“executable”,”param1”,”param2”] 这种方式启动程序,才是我们想要的,这种方式执行和启动时,我们的程序会被直接启动执行,而不是以...shell的方式,这样我们的程序就能以PID=1的方式开始执行了。

    1.7K21

    进程信号

    信号入门 技术中的信号 用户输入命令,在Shell下启动一个前台进程。...一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。...Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接到像 Ctrl-C 这种控制键产生的信号。...阻塞信号 信号其他相关常见概念 实际执行信号的处理动作称为信号递达 信号从产生到递达之间的状态,称为信号未决 进程可以选择阻塞某个信号。...被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作 注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。

    1.3K20

    %99的人都不知道的Docker技巧:优雅的终止容器

    而在容器被停掉的时候,微服务需要即时从服务发现模块中注销自己,以防止从API Gateway而来的请求被错误的路由到了已经被停止掉的微服务。...而docker kill命令,更像是Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。...接下来我们可以写一个简单的Go程序来实现信号的接收与处理,程序在启动过后,会一直阻塞并监听系统信号,直到监测到对应的系统信号后,输出控制台并退出执行。...CMD [“/graceful”] 使用 CMD [“executable”,”param1”,”param2”] 这种方式启动程序,才是我们想要的,这种方式执行和启动时,我们的程序会被直接启动执行,而不是以...shell的方式,这样我们的程序就能以PID=1的方式开始执行了。

    96820

    MySQL 启停过程了解一二

    SIGKILL 这个是shell命令kill -9 pid发送的信号,进程接收到此信号后,会立即停止进程,无法按正常的退出流程执行。...因此,在linux操作系统中,如果使用kill命令停止MySQL服务,建议使用kill (-15) pid,而不是kill -9 pid,虽然kill -9能够快速停止,但是可能会对数据、文件造成破坏,...有一个特殊情况,如果实例是slave节点,会等待sql_thread线程执行完当前的组事务、SQL命令,以减少复制问题。 5、关闭server层、关闭存储引擎层。...如果是由shell发起了kill -9,第3、4、5步都不会有,直接跳过 启动过程 本章节本来是打算详细描述下MySQL的启动过程,但是能力有限,暂时只观察到以下大概的启动步骤 整个启动过程,其他步骤比较容易理解...,需要加载ib_buffer_pool文件的内容,还需要到对应数据文件中去读取完整用户记录,因此启动过程中会有比较大的IO消耗,但这个恢复是由单独的线程异步处理,并不会阻塞MySQL服务的正常启动。

    64420

    【Linux】项目部署(完)

    -1.0-SNAPSHOT.jar ==注意: 由于前面安装的Tomcat在启动时,会占用端口号8080,而当前springboot项目我们没有配置端口号,默认也是8080,所以我们要想启动springboot...但是这个工程目前是存在问题的,就是当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了,我们可以试一下。 目前程序运行的问题: A....线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行 B....线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息 后台运行程序: 要想让我们部署的项目进行后台运行,这个时候我们需要使用到linux中的一个命令 nohup ,接下来,就来介绍一下nohup...要执行Shell脚本需要有对此脚本文件的执行权限(x),如果没有则不能执行 Linux系统中权限描述如下: 解析当前脚本的权限情况: chmod命令可以使用八进制数来指定权限(0 - 代表无 ,

    1.3K30

    shell编程菜鸟教程_java并发编程实战 pdf

    它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。...Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。...命令是一种提前停止循环内命令,而不完全终止循环的方法,这就需要在循环内设置shell不执行命令的条件 条件 bash条件测试 格式: test EXPR [ EXPR...HUP信号(hangup)信号从而关闭其所有子进程 nohup命令 不挂断的运行命令,忽略所有挂断(hangup)信号 nohup test.sh & nohup会忽略进程的hangup挂断信号,所以关闭当前会话窗口不会停止这个进程的执行...ps:用来显示进程的相关信息 ps显示当前shell启动的所有进程 ps -e显示系统中所有进程 ps -ef|grep java jps:类似linux的ps命令,不同的是ps是用来显示所有进程,而

    4.6K20

    【小家运维】达到Linux第三阶段的常用命令笔记记录—Part Ⅲ

    解决办法 在shell中使用nohub启动jar的时候,按照上面命令启动可能会出现nohup: redirecting stderr to stdou而不会停止。...在当前的shell执行一个sh文件,都会临时产生一个子shell,该文件执行完毕后,将自动返回到父shell。 子shell会继承父shell的所有永久环境变量和临时环境变量。...path的话)的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。...那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面,这也就是不用重启的原因,可以立即生效~~~ source 作用在本shell程序中执行,不启动子shell,所以可以影响脚本的父shell...中运行的,而source则是在当前shell环境中运行的。

    1.9K20

    嵌入式笔试面试题目系列(四)

    2、Linux系统的组成部分 Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。 ? ? 3、用户空间与内核通信方式有哪些? 1)系统调用。...执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。...14、中断和异常的区别 内中断:同步中断(异常)是由cpu内部的电信号产生的中断,其特点为当前执行的指令结束后才转而产生中断,由于有cpu主动产生,其执行点必然是可控的。...,init 6,,shutdow -r时间 在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动 具体可用参数可以百度。...(chmod 777 /etc/squid 运行命令后,squid文件夹(目录)的权限就被修改为777(可读可写可执行)) 2、查找文件中匹配字符串的命令:grep 3、查找当前目录:pwd 4、

    1.1K40

    深入理解计算机系统:进程

    外壳(Shell) 指“为使用者提供使用者界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指操作系统中提供存取内核所提供之服务的程式。...Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。内核不提供交互。 抢占(Preemption) 分为非抢占式和抢占式。根据调度主体分用户抢占与内核抢占。.../bin/kill -9 -15213 从键盘发送信号 unix使用作业(job)表示对每一个命令行执行而创建的进程,至多一个前台作业和0个或多个后台作业。通过|unix管道连接起多个进程。...待处理信号被阻塞。Unix信号处理程序通常会阻塞当前处理程序正在处理的类型的待处理信号k。如果另一个信号k传递到该进程,则信号k将变成待处理,但是不会被接收,直到处理程序返回。...待处理信号不会排队等待。任意类型最多只有一个待处理信号。当目的进程正在执行信号k的处理程序时是阻塞的,当发送两个信号k,仅第一个信号k会变成待处理,第二个则直接被丢弃,不会排队等待。

    1.2K91

    TTY 到底是个什么玩意?

    host1 上面的 ssh 会被停止 host2 上面的 sleep 命令会被停止,ssh 回话将继续保持 用过 ssh 命令的人都应该知道现象是(2),我们可以在 ssh 提供的 shell 里面随便...Ctrl+C 而不会对 ssh 造成任何影响。...最后我们回到本文开头的第二个问题:为什么在 ssh 里面按下 Ctrl+C 并不会停止 ssh 而是会停止 ssh 内的程序呢? 我们回顾一下,当我们在本机按下 Ctrl+C 的时候,都发生了什么?...验证2 从反面证明一下,假如说我们在 ssh 登录之前,强行将 ssh 所在的 TTY 开启 isig,那么按下 Ctrl-C ,将会结束 ssh 进程本身,而不是 ssh 内部运行的程序。...然后在 ssh (当前的前台程序是 sleep 9999)按下 Ctrl+C。这时候 ssh 直接退出了,我们回到了 local shell,而不是结束 ssh 中的 sleep。

    1.6K30

    Linux项目开发,你必须了解Systemd服务!

    Systemd 简介Systemd是什么,以前linux系统启动init机制,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理...配合的其他Unit,如果它们没有运行,当前Unit不会启动失败BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前Unit停止运行Before:如果该字段指定的Unit也要启动...ExecStart:启动当前服务的命令ExecStartPre:启动当前服务之前执行的命令ExecStartPost:启动当前服务之后执行的命令ExecReload:重启当前服务时执行的命令ExecStop...:停止当前服务时执行的命令ExecStopPost:停止当其服务之后执行的命令RestartSec:自动重启当前服务间隔的秒数Restart:定义何种情况Systemd会自动重启当前服务,可能的值包括always...但如果服务是由于正常的系统维护任务而被停止,或者开发人员故意停止服务进行调试,那么它将不会被重启。其应用场景如下:生产环境:在不希望因为维护或更新操作而自动重启服务的生产环境中使用。

    16310

    进程信号大总结(整理)

    用户输入命令,在Shell下启动一个前台进程。 . 用户按下Ctrl-C ,这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程 ....Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程 结束就可以接受新的命令,启动新的进程。 2....首先用ulimit命令改变Shell进程的Resource Limit,允许core文件最大为1024K: $ ulimit -c 1024 然后写一个死循环程序: 前台运行这个程序,然后在终端键入...被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。 2....被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。

    11810

    nginx启动成功_centos重启服务器命令

    /nginx 执行上面的操作后,成功启动nginx,程序是没有任何提示的。...从第1列可以看出,nginx主进程以root用户运行,而工作进程以nobody用户运行,第二列显示了5个进程的ID(即PID),分别为:74751 74752 74753 74754和74755 注意:...从容停止服务 前面的stop是立即停止nginx服务,无论当前工作进程是否正在处理工作。而nginx提供的从容停止方式quit,是在完成当前工作任务后再停止,即平缓停止。 ....通过kill 或 killall 命令杀死进程 linux中提供了kill命令可以杀死进程,从而让指定的进程停止运行 kill nginx主进程pid 除了启动与停止nginx服务的操作,还有一些其他常用命令...以特定目录下的配置文件启动nginx nginx -t 检查当前配置文件是否正确 nginx -t -c /特定目录/nginx.conf 检测特定目录下的nginx配置文件是否正确 nginx -v

    2.7K20
    领券