首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell:子shell概念

    目录 shell环境 什么是子shell 子shell的分类 shell环境 每个shell进程有一个自己的运行环境,不同的Shell进程有不同的Shell环境。...如果在Shell脚本中遇到子脚本(即脚本嵌套),就会先执行子脚本的内容,完成后再返回父脚本继续执行父脚本内后续的命令及语句。...可以使用$BASH_SUBSHELL变量来查看从当前进程开始的子shell层数,$BASHPID查看当前所处BASH的PID,这不同于特殊变量$$值,因为$$在大多数情况下都会从父shell中继承。...父shell通过fork-exec的方式创建子shell,导致父shell和子shell除了维持“父子关系”外,没有其他关联。...注释:使用 fork() 函数可以创建一个子进程;除了 PID(进程ID)等极少的参数不同外,子进程的一切都来自父进程,包括代码、数据、堆栈、打开的文件等,就连代码的执行位置(状态)都是一样的。

    1.4K30

    BashShell变量

    var=value command 3.2 设置全局用户定义变量 创建全局环境变量的方法是先创建一个局部变量,再通过 export 命令导出到全局环境中。...其实也好理解,因为不同进程之间的各个参数都是独立的,因此只有在创建子进程的时候存在父进程到子进程的变量继承,创建后两个进程之间的变量就是完全独立的,互不影响。...var} 3.5 删除环境变量 在 Bash Shell 使用 unset 命令来删除环境变量。 unset var 和修改全局变量类似,在子进程中删除全局变量也无法反映到父进程中。...5.1 Bash Shell 支持的 Unix Bourne Shell 环境变量 变量 说明 CDPATH 冒号分隔的目录列表,作为 cd 命令的搜索路径 HOME 当前用户的主目录 IFS Shell...需要注意的是,在当前 Shell 创建的子 Shell 中,指的仍然当前父 Shell 的 PID;而在孩子 Shell 中则是孩子 Shell 的 PID。

    2.4K30

    第三十七章 : 奇珍异宝

    这个脚本,称为 array-2,当给定一个目录名,打印出目录中的文件列表,伴随着每个文件的文件所有者和组所有者。在文件列表的末尾,脚本打印出属于每个所有者和组的文件数目。...传统上,在类似于 unix 系统中的程序会在 /tmp 目录下创建它们的临时文件,/tmp 是一个服务于临时文件的共享目录。...Here is an example: 一个比较好的方法是使用 mktemp 程序(不要和 mktemp 标准库函数相混淆)来命名和创建临时文件。...在这个例子中,我们看到该子脚本是非常简单的。真正的操作通过父脚本完成。在父脚本中,子脚本被启动,并被放置到后台运行。子脚本的进程 ID 记录在 pid 变量中,这个变量的值是 $!...父脚本继续,然后执行一个以子进程 PID 为参数的 wait 命令。这就导致父脚本暂停运行,直到子脚本退出,父脚本随之结束。

    61710

    bash运行脚本的几种方式 转

    bash shell 脚本执行的方法有多种,本文作一个总结,供大家学习参考。 假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。...方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh。...脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。...shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。 假设shell脚本文件为hello.sh 放在/root目录下。...[root@localhost tmp]# pwd /tmp 对于第4种不会创建子进程,而是在父进程中直接执行。

    2.3K10

    从npm、npx说起,到shell

    背景:目前整个我们前端工程栈有多处 CLI(包括工具、模板等等),CLI 带来了巨大的便利性,但其在 Windows 下执行往往和 Mac/Unix 系统下表现不同。...其能运行于大多数 Unix 系统的操作系统之上,包括 Linux 和 Mac OS 都将他作为默认 shell。...world" declare 声明一些特殊类型的变量,比如声明只读类型的变量和整数类型的变量 $ declare -i val1=12 3.子 Shell 如果修改继承的变量,不会影响父 Shell #...如果 Bash 解释器不放在目录/bin,脚本就无法执行了。为了保险,可以写成下面这样: #!/usr/bin/env bash # node 脚本 #!/usr/bin/env node #!...如果将脚本放在环境变量$PATH指定的目录中,就不需要指定路径了。因为 Bash 会自动到这些目录中,寻找是否存在同名的可执行文件。

    3.9K20

    进程组、会话、控制终端概念,如何创建守护进程?

    这种方法有两个缺点: 1. 启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 2. 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。...守护进程创建流程 守护进程创建流程如下: 1. 创建子进程,父进程退出 2. 在子进程中创建新会话 3. 改变当前目录为根目录 4. 重设文件权限掩码 5....复制代码 那么,在创建守护进程时为什么要调用setsid()函数呢? 读者可以回忆一下创建守护进程的第一步,在那里调用了fork()函数来创建子进程再令父进程退出。...由于在调用fork()函数时,子进程全盘复制了父进程的会话期、进程组和控制终端等,虽然父进程退出了,但原先的会话期、进程组和控制终端等并没有改变,因此,还不是真正意义上的独立。...使用fork()创建的子进程继承了父进程的当前工作目录。

    1.5K20

    惊!Docker竟有这些不为人知的bug

    Docker 和子进程“僵尸化”问题 初始进程的责任:“收割”“僵尸进程” Unix 的进程之间是树状结构的关系。每个进程都可以派生出子进程,而除了最顶端的进程之外,也都会有一个父进程。...这就意味着初始进程会成为这些子进程的父进程,而无论其是否由初始进程创建。 以 Nginx 为例,其默认就会作为后台程序运行。...这在 Unix 操作系统中是一个非常重要的机制,大量的软件都是因而设计和实现。几乎所有的服务(daemon)程序都预期初始进程会「领养」和“收割”其守护子进程。...任何一个进程在结束时,都会预期初始进程能够清理(「领养」和“收割”)其子进程。这一点,在《操作系统概述》和《Unix 系统高级编程》两书中描述地非常详细。...举一个相对复杂地例子,我们的容器是一个 web 服务器,需要去跑一段基于 bash 的 CGI 脚本,而该脚本又会去调用 grep 程序。

    4.1K10

    支持多用户web终端实现及安全保障(nodejs)

    unix等系统)创建主从设备,然后在子进程中设置权限之后(setuid、setgid),执行系统调用pty_execvpe(execvpe的封装),此后主设备的输入信息都会在此得到执行(子进程执行的...此处关于父进程、主设备、子进程、从设备的输入输出描述有些让人迷惑,在此解释。父进程与主设备的关系是:父进程通过系统调用创建主设备(可看做是一个PIPE),并获取主设备的fd。...父进程通过创建该fd的connect socket实现向子进程(从设备)的输入输出。...而子进程通过forkpty 创建后执行login_tty操作,重置了子进程的stdin、stderr和stderr,全部复制为从设备的fd(PIPE的另一端)。...有很多方法来打破受限制的bash shell,这是不容易预测的。 最后,貌似只有一个解决方案了,即chroot。chroot修改了用户的根目录,在制定的根目录下运行指令。

    1.7K50

    《Linux命令行与shell脚本编程大全》 第六章环境变量

    很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息。...在bash shell中,分两类: 全局变量:对于shell会话和所有生成的子shell都是可见的 局部变量:只对创建的它们的shell可见 6.1.1全局环境变量 查看全局变量,  $env    $...设定全局变量的进程所创建的子进程中,该变量都是可见的。...创建方法: (1) $my_variable=hello  // 创建环境变量 $export my_variable  // 导出到全局变量中 (2)export $my_variable=new_hello...这种进程不会访问/etc/profile,只会检查HOME下的.bashrc .bashrc有两个作用:1.查看/etc目录下通用的bashrc文件、2.为用户提供一个定制自己命令别名和私有脚本函数的地方

    1K100

    Linux文件类型

    二.详解 管道文件 管道分为匿名管道和命名管道。管道都是一端写入、另一端读取,它们是单方向数据传输的,它们的数据都是直接在内存中传输的,管道是进程间通信的一种方式,例如父进程写,子进程读。...在shell中匿名管道就是一个管道符号”|”,例如ls | grep xxx,其中ls对应的进程是这个独立进程组中的父进程,grep对应的进程是子进程,父进程写子进程读。...在shell中,可以使用mknod命令或mkfifo命令创建命名管道,在写某些特殊需求的shell脚本时,命名管道非常有用。...对于bash shell,可以通过nc命令(NetCat)来创建,或者干脆使用两个命名管道来实现对应的功能。如有需要,可自行了解如何在bash shell中使用Unix Domain套接字。...典型的字符设备是终端(终端分多种,由物理的也有虚拟的)和键盘。 区分块设备和字符设备最简单的方法是看数据访问的方式。能随机访问获取数据的是块设备,必须按字节顺序访问的是字符设备。

    3.1K10

    基于 Wazuh-常见主机入侵检测方法

    "\n"'echo "Tkid3:AASwmzPNx.3sg:0:0:me:/root:/bin/bash">>/etc/passwd 检测:wazuh 默认每 12h 检查 /etc 目录下文件完整性...方案一: 通过 audit 日志检测 uid 和 euid 判断父进程是否为低权限用户,提出 pid 找出对应环境变量。看下是否上面的三个变量。...对于主机层的网上找到两种检测方法:联动 osquery 检测和联合 audit 检测 联合 audit 检测 原理:如果 bash 进程有远程 socket 但是没有 tty,那么就认定是一个反弹 shell...原始的 sshd 监听端口建立了 tcp 连接后,会 fork 一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的 /usr/sbin/sshd,这样子控制权又回到脚本了。...1、提权检测--还是上文说到的问题 2、文件软连接检测--类似软链接了 ssh 这种然后作为后门,一般系统命令应该不会被软链接的吧 3、进程注入--原理和检测方法需要琢磨琢磨 4、Rootkit 检测(

    9.8K50

    shell脚本语言(超全超详细)

    etc/profile 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,系统的公共环境变量在这里设置 开始自启动的程序,一般也在这里设置 ~/.bashrc 用户自己的家目录中的.../xxx.sh 或 bash xxx.sh)时会创建一个子shell解析 脚本 注意:windows下 写脚本 在linux下执行 注意 执行结果: 将windows文件 转换成...unix文件 方法一:dos2unix 如果没有该插件 需要安装 sudo apt-get install dos2unix dos2unix shell脚本 转换成功就可以执行运行 方法二:...注意:source命令与shell scripts的区别是, source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。...这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。

    2.7K20
    领券