`
zhanshenny
  • 浏览: 259769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

命令或脚本执行的方式

阅读更多

1、source命令
   用法: source filename
   作用: 在当前bash环境下读取并执行filename中的命令,该filename文件可以无"执行权限" 
   注:source命令通常用“.”来替代,如:source bash_profile   . bash_profile两者等效。 
   source(或点)命令通常用于重新执行刚修改的初始化文档。 
   source命令(从 C Shell 而来)是bash shell的内置命令。 
   “.”命令(从Bourne Shell而来),就是顺序的执行文件里的命令。
2、sh和bash命令
   用法: sh filename 或 bash filename
   作用: 在当前相应的bash环境下新建一个子shell读取并执行filename中的命令,该filename文件可以无"执行权限" 
   注:两者在执行文件时的不同,是分别用自己的shell来跑文件。 
   sh使用“-n”选项进行shell脚本的语法检查,使用“-x”选项实现shell脚本逐条语句的跟踪,可以巧妙地利用shell的内置变量增强“-x”选项的输出信息等。
3、./命令
   用法: ./filename 
   作用: 打开一个子shell来读取并执行filename中命令,该文件必须有可执行的权限。 
   注:运行一个shell脚本时会启动另一个命令解释器。
4、exec
   作用: 以新的程序取代shell,或者改变shell本身的I/O设置。
   系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。
   这个命令还可以作为find命令的一个选项。
   find ./ -name "test.txt" -exec rm {} /;

5、fork
   fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。

6. supervise
supervise是个进程的管理工具,原理是这样的 :
 supervise启动的时候fork一个子进程,子进程执行execvp运行指定的进程。指定进程变成supervise的子进程运行,而supervise则死循环运行,并通过waitpid或者wait3系统调用选择非阻塞的方式去侦听子进程的运行情况。当然同时也会读取pipe文件svcontrol的命令,然后根据命令去执行不同的动作。如果子进程因某种原因导致退出,则supervise通过waitpid或者wait3获知,并继续启动模块,如果模块异常导致无法启动,则会使supervise陷入死循环,不断的启动模块。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics