精华内容
下载资源
问答
  • docker exec详解

    2021-02-23 14:00:03
    docker exec :在运行的容器中执行命令 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG…] OPTIONS说明: -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 实例 在容器 mynginx...

    docker exec :在运行的容器中执行命令

    语法

    docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

    OPTIONS说明:

    -d :分离模式: 在后台运行

    -i :即使没有附加也保持STDIN 打开

    -t :分配一个伪终端

    实例

    在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:

    docker exec -it mynginx /bin/sh /root/runoob.sh

    在容器 mynginx 中开启一个交互模式的终端:

    runoob@runoob:~$ docker exec -i -t  mynginx /bin/bash
    

    也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。

    查看已经在运行的容器 ID:

    # docker ps -a 
    ...
    9df70f9a0714        openjdk             "/usercode/script.sh…" 
    ...
    

    第一列的 9df70f9a0714 就是容器 ID。

    通过 exec 命令对指定的容器执行 bash:

    # docker exec -it 9df70f9a0714 /bin/bash
    
    展开全文
  • 这篇文章主要介绍了Python中的进程分支fork和exec详解,本文用实例讲解fork()的使用,并讲解了exec相关的8个方法等内容,需要的朋友可以参考下 在python中,任务并发一种方式是通过进程分支来实现的.在linux系统在,通过...
  • Python内置函数exec详解

    千次阅读 2019-08-08 19:15:30
    exec()是Python一个内置函数。点击此处查看所有Python内置函数列表。 exec(object[, globals[, locals]]) exec()能够动态地执行复杂的Python代码。比如一个写在txt文件中的代码,可以在Python程序中读取后,用exec...

    exec()是Python一个内置函数。点击此处查看所有Python内置函数列表。

    exec(object[, globals[, locals]])
    

    exec()能够动态地执行复杂的Python代码。比如一个写在txt文件中的代码,可以在Python程序中读取后,用exec()执行。

    参数:

    • object:必选参数,表示需要被指定的python代码,它必须是字符串或code对象。如果object是一个字符串,该字符串会被先解析为一组python语句,然后再执行。如果object是一个code对象,那么它只是被简单的执行
    • globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
    • locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。

    返回:

    None

    展开全文
  • 主要介绍了Python中的进程分支fork和exec详解,本文用实例讲解fork()的使用,并讲解了exec相关的8个方法等内容,需要的朋友可以参考下
  • shell脚本常用函数和命令(2)exec详解1)fork的概念fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子...
    shell脚本常用函数和命令(2)exec详解
    1)fork的概念
    fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。
    环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。
    不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 
    一个进程主要包括以下几个方面的内容:
    1.)一个可以执行的程序
    2.)与进程相关联的全部数据(包括变量,内存,缓冲区)
    3.)程序上下文(程序计数器PC,保存程序执行的位置) 

    2)exec命令并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。
    如果你在一个shell里面,执行exec ls,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,exec命令在执行时会把当前的shell process关闭。
    在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命令不产生新的子进程。那么exec与source的区别是什么呢?

    为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用可以用bash a.sh,(a.sh就是存放该命令的脚本),
    这样会为a.sh建立一个子shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。

    3)source命令或者”.”,也不会为脚本新建shell,而只是将脚本包含的命令在当前shell执行。
    source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell),source是执行shell脚本,而且执行后会返回以前的shell

    4)exec功能列表
    exec ls     在shell中执行ls,ls结束后不返回原来的shell中了
    exec <file 将file中的内容作为exec的标准输入
    exec >file 将file中的内容作为标准写出
    exec 3<file 将file读入到fd3中
    sort <&3 fd3中读入的内容被分类
    exec 4>file 将写入fd4中的内容写入file中
    ls >&4 Ls将不会有显示,直接写入fd4中了,即上面的file中
    exec 5<&4 创建fd4的拷贝fd5
    exec 3<&- 关闭fd3

    虽然exec和source都是在父进程中直接执行,但exec这个与source有很大的区别,source是执行shell脚本,而且执行后会返回以前的shell。而exec的执行不会返回以前的shell了,而是直接把以前登陆shell作为一个程序看待,在其上经行复制
    1.例:
    #exec >text.txt  将输出重定向到一个文件text.txt中,即屏幕的输出都输出到text.txt中
    #exec>/dev/tty   重新将输出定义到屏幕
    如/dev/fd/目录下看一下:
    [root@controller1 ~]#ls /dev/fd
    0  1  2  255
    默认会有这四个项:
    0是标准输入,默认是键盘。
    1是标准输出,默认是屏幕/dev/tty
    2是标准错误,默认也是屏幕
    255
    exec 3>test 重定向到fd 3中的文件会被写在test中
    exec 3>&- 关闭这个重定向
    展开全文
  • 1、exec 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所...

    1、exec

    系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。

    一个进程主要包括以下几个方面的内容:

    1. 一个可以执行的程序
    2. 与进程相关联的全部数据(包括变量,内存,缓冲区)
    3. 程序上下文(程序计数器PC,保存程序执行的位置)

    exec是一个函数簇,由6个函数组成,分别是以excl和execv打头的。具体如下:

    execl(const char* filepath,const char* arg1,char*arg2......)
    execlp(const char*filename,const char*arg1,const char*arg2..... )
    execle(const char*filepath,const char*arg1,const char*arg2,.....,char* cons envp[])
    execv(const char* filepath,char* argv[])
    execvp(const char* filename,char* argv[])
    execve(const char* filepath,char*argv[],char* const envp[])
    

    execl与execv的主要区别:

    1. 以execl开头的函数第二个参数传递的是参数的个数,一一列举出来。而以execv开头的函数把参数放到指针数组里面去。
    2. execlp与execvp第二个参数是文件名,而其它的都需要命令的完整的路径名。
    3. execle与execve需要传递环境信息,即把新的环境指定到新的进程中去,而其它的函数并没有传递环境,而是将原来的环境默认为新进程的环境。

    对于列举出参数的execl族函数来说,第二个参数的第一个是命令名,第二个是命令参数,最后一个为NULL.

    对于使用参数列表的execv族函数来说,第二个参数的第一个也是命令名,第二个是命令参数,最后一个为NULL.也可以从命令行输入。

    执行exec系统调用,一般都是这样,用fork()函数新建立一个进程,然后让进程去执行exec调用。我们知道,在fork()建立新进程之后,父进各与子进程共享代码段,但数据空间是分开的,但父进程会把自己数据空间的内容copy到子进程中去,还有上下文也会copy到子进程中去。而为了提高效率,采用一种写时copy的策略,即创建子进程的时候,并不copy父进程的地址空间,父子进程拥有共同的地址空间,只有当子进程需要写入数据时(如向缓冲区写入数据),这时候会复制地址空间,复制缓冲区到子进程中去。从而父子进程拥有独立的地址空间。而对于fork()之后执行exec后,这种策略能够很好的提高效率,如果一开始就copy,那么exec之后,子进程的数据会被放弃,被新的进程所代替。

    2、exec与system的区别

    1. exec是直接用新的进程去代替原来的程序运行,运行完毕之后不回到原先的程序中去。

    2. system是调用shell执行你的命令,system=fork+exec+waitpid,执行完毕之后,回到原先的程序中去,继续执行下面的部分。

      system函数源码:

      int system(const char * cmdstring)
      {
      	pid_t pid;
      	int status;
      	if(cmdstring == NULL)
      	{     
      		return (1);
      	}
      	if((pid = fork())<0)
      	{        
      		status = -1;
      	}
      	else if(pid == 0)
      	{    
      		execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);    
      		-exit(127); //子进程正常执行则不会执行此语句 
      	}
      	else{        
      		while(waitpid(pid, &status, 0) < 0){            
      			if(errno != EINTER)
      			{                
      				status = -1;                
      				break;            
      			}    
      	    }   
      	 }   
      	 return status; 
      }
      
    3. system会新起一个子进程调用要执行的文件或命令,而exec函数则会进程直接执行要执行的命令或文件,所以exec后面的代码不会被执行。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。

    总之,如果你用exec调用,首先应该fork一个新的进程,然后exec。而system不需要你fork新进程,已经封装好了。

    原文链接:https://blog.csdn.net/happygongzhuo/article/details/6883040

    展开全文
  • Linux常用命令 --find命令之exec详解

    千次阅读 2019-01-09 11:12:14
    Linux命令--find命令之execexec解释:实例1:ls -l 命令放在 find 命令的 -exec 选项中实例2:在目录中查找更改时间在n 日以前的文件并删除它们实例3:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前...
  • Runtime.exec详解

    千次阅读 2016-04-22 14:26:56
    Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程...而 Runtime.exec方法 就为我们打开这么的一条路了。
  • docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 3. 案例 3.1 使用容器 ID 进入容器 ...
  • Process p = Runtime.getRuntime().exec( "ps -ef" ); BufferedReader stdInput = new BufferedReader ( new InputStreamReader(p.getInputStream())); BufferedReader stdError = new BufferedReader...
  • 如果你还想从头学起 Docker,可以看看这个系列的文章哦! ...作用 在正在运行的容器中运行命令 ...docker exec [OPTIONS] CONTAINER COMMAND [ARG...] options 说明 options 作用 -d 在后台运行命...
  • close_on_exec详解

    千次阅读 2016-10-14 22:49:08
    当父进程打开文件时,只需要应用程序设置FD_CLOSEXEC标志位,则当fork后exec其他程序的时候,内核自动会将其继承的父进程FD关闭。 因为我用的是Python的subprocess模块fork的子进程,他有一个参数close_fds可以设...
  • Linux下exec函数详解

    千次阅读 2018-10-20 23:28:42
    exec内核函数调用 exec函数说明exec函数的作用是执行一个文件,他有很多同类型函数,对execl而言,所需要传入的参数,第一个是文件的绝对路径,后面就是给要执行文件传入的参数,下面的程序,绝对路径path="/...
  • xargs和exec详解

    2017-01-13 16:52:20
    find -exec[root@wy ~]# find /var/log/ -type f -mtime +10 -exec cp {} {}.bak \; xargs[root@wy ~]# find /var/log/ -type f -mtime +10 | xargs -i cp {} {}.bak说明:这两种用法效果一样。xargs也可以与其他...
  • Runtime.getRuntime().exec 用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能和windows“运行”类似。 格式: Process process = Runtime.getRuntime
  • exec函数详解

    万次阅读 多人点赞 2018-05-17 17:30:59
    (1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名...
  • Python进程分支fork和exec详解

    千次阅读 2015-04-07 10:52:52
    这时需要用到exec方法替换子进程,并且替换后进程的pid不会改变.exec方法不会返回. 首先解释一下exec相关的8个方法组: os.execv(program, cmdargs) 基本的”v”执行形式,需要传入可执行的程序名,以及用来...
  • I/O重定向和管道:使用pipe、fork、exec详解。 要使 who | sort 用程序实现,需要进行 I/O重定向,参考了Unix / Linux编程实践教程,画了几个图来理解这个程序,可能会更好。 1. 当运行pipe( pipe_id )...
  • Oracle 中 call 和 exec的区别 今天做项目使用Oracle,在做项目的过程中觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev)  总结: exec是sqlplus的命令,只能在...
  • 在做一个项目时用到了Runtime.exec(String command),但是网上的很多博客讲解的都很不详细明白,也不全,干脆我自己来做一个讲解。 我们先来看看api的解释:   从字面上理解的意思就是在单独打开一条线程执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,571
精华内容 16,228
关键字:

exec详解