令行而已。 再结合以上两个概念(process + script),那应该就不难理解如下这句话的意思了: * 正常来说,当我们执行一个 shell script 时,其实是先产生一个 sub-shell 的子行程,然后 sub-shell 再去产生命令行的子行程。 然则,那让我们回到本章开始时所提到的例子再从新思考: Q U O T E: cd /etc/aa/bb/cc可以执行 但是把这条命令

写入shell时shell不执行! 这是什么原因呀! 我当时的答案是这样的: Q U O T E: 因为,一般我们跑的 shell script 是用 subshell 去执行的。 从 process 的观念来看,是 parent process 产生一个 child process 去执行, 当 child 结束后,会返回 parent ,

但 parent 的环境是不会因 child 的改变而改变的。 所谓的环境元数很多,凡举effecti v e id,v ariable,w orkding dir 等等... 其中的 w orkding dir ($PWD) 正是楼主的疑

问所在: 当用 subshell 来跑 script 的话,sub shell 的 $PWD 会因为 cd 而变更, 但当返回 primary shell 时,$PWD 是不会变更的。 能够了解问题的原因及其原理是很

好的,但是?如何解决问题恐怕是我们更感兴趣的!是吧?^_^那好,接下来,再让我们了解一下 source 命令好了。 当你有了 fork 的概念之后,要理解 source 就不难: * 所谓 source 就是让 script 在当前 shell 内执行、而不是产生一个 sub-shell 来执行。 由於所有执行结果均於当前 shell 内完成,若 script 的环境有所改变,当然也会改变当前环境了! 因此,只要我们要将原本单独输入的 script 命令行变成 source 命令的参数,就可轻易解决前例提到的问题了。 比方说,原本我们是如此执行 script 的: CO D E:./my.script 现在改成这样即可: CO D E: source ./my.script 或: ../my.script 说到这里,我想,各位有兴趣看看 /etc 底下的众多设定文件, 应该不难理解它们被定议后,如何让其他 script 读取并继承了吧? 若然,日后你有机会写自己的 script

,应也不难专门指定一个设定文件以供不同的 script 一起"共用"了...^_^ okay,到这里,若你搞得懂 fork 与 source 的不同,那接下来再接受一个挑战: ---- 那 exec 又

与 source/fork 有何不同呢? 哦... 要了解 exec 或许较为复杂,尤其扯上 File

D escriptor 的话... 不过,简单来说: * exec 也是让 script 在同一个行程上执行,但

是原有行程则被结束了。 也就是简而言之:原有行程会否终止,就是 exec 与 source/fork 的最大差异了。 嗯,光是从理论去理解,或许没那么好消化,不如动手"实作+思考"来的印像深刻哦。 下面让我们写两个简单的 script ,分别命令为 1.sh 及2.sh : 1.sh CO D E:#!/bin/bash A=B echo "P I D for 1.sh before

exec/source/fork:$$" export A echo "1.sh:\$A is $A" case $1 in exec) echo "using exec..." exec ./2.sh ;; source) echo "using source..." ../2.sh ;; *) echo "using fork by default..." ./2.sh ;; esac echo "P I D for 1.sh after exec/source/fork:$$" echo "1.sh:\$A is $A" 2.sh CO D E:#!/bin/bash echo "P I D for 2.sh:$$" echo "2.sh get \ $A=$A from 1.sh" A=C export A echo "2.sh:\$A is $A" 然后,分别跑如下参数来观

察结果: CO D E:$./1.sh fork $./1.sh source $./1.sh exec 或是,你也可以参考

C U 上的另一贴子: http://www.doczj.com/doc/af2a8bc758f5f61fb73666c5.html/forum/v ie w topic.php?t=191051 好了,别忘了仔细比较输出结果的不同及背后的原因哦... 若有疑问,欢迎提出来一起讨论

讨论~~~ happy scripting!^_^

linux如何查icsci进程,linux13问相关推荐

  1. linux如何查进程、杀进程,重启进程

    linux如何查进程.杀进程,重启进程 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序. ps -A 显示所有程序. ps c 列出程序时,显 ...

  2. linux命令查进程,Linux常用命令(十)查看和控制进程

    Linux常用命令(十)查看和控制进程 一.查看进程 1.ps命令--查看静态的进程统计信息(Processes  Statistic) ps命令时Linux系统中最为常用的进程查看工具,主要用于显示 ...

  3. linux怎么监控守护进程,linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  4. linux ps查看完整时间,Linux ps 命令查看进程启动及运行时间

    引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦. ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这 ...

  5. Linux高性能服务器开发——进程篇

    本文主要是学习Linux高性能服务器开发需要提前了解的知识,后续还会涉及到虚拟内存方面的内容,各位看官可以多了解了解,看到文章内有将的不清楚或者讲错的地方请各位一定留言,我看到后会第一时间验证并修正的 ...

  6. Linux内核之话说进程

    前言 回望笔者之前发的数篇技术博客,中规中矩,阅读量更是不尽人意,看来没帮到多少人,不行,文风要改,要大改.于是乎,笔者金荣摇身一变,化作Linux OS的一个进程,我是一个进程,我来讲述我的故事. ...

  7. Linux OOM 自动杀死进程(转)

    Linux OOM 自动杀死进程 问题描述: 今天上班后,登录一台内网测试服务器,发现部分进程失踪 (Nginx/PHP-FPM/MySQL/Crond). 解决方法: 1.首先启动这些进程,保证正常 ...

  8. linux系统编程之进程(八):守护进程详解及创建,daemon()使用

    linux系统编程之进程(八):守护进程详解及创建,daemon()使用 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等 ...

  9. linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)

    定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息.通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到,如果是主动与别的机器建立的连接信息则可以通过 lsof ...

最新文章

  1. C#中方法参数的四种类型
  2. GO!自制一款【不丑】的名片
  3. 运用ajax技术写联动的效果
  4. unescape解密 php,php 版 模仿 js ,unescape函数解码,escape函数编码的方法
  5. 保存Activity的状态
  6. CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力
  7. linux系统md5sum命令用不了,Linux中md5sum命令起什么作用呢?
  8. 基础线性规划实现---python
  9. python脚本简化jar操作命令
  10. Linux 镜像文件下载
  11. php里日期转为时间戳_php时间戳与日期的转换
  12. EasyRecovery注册码哪里有?
  13. QQ音乐API爬取全过程
  14. 半功率点为啥是-3dB
  15. linux基础教程 黑鹰基地Linux运维特训班
  16. 导出DNS服务器上的记录
  17. 渐变多彩创意双十二活动方案主题PPT
  18. C实现前序遍历二叉树
  19. 51nod1431 快乐排队
  20. 快手校招Java后端面经

热门文章

  1. About Exception Handling
  2. 聊聊restful和restframework
  3. [MongoDB]安装MongoDB遇到问题
  4. EF Code First建库 增删改查
  5. 简明Python3教程 15.异常
  6. zabbix-server无法启动
  7. MySQL如何访问Postgres
  8. Git 修改已提交 commit 的信息
  9. 在 Linux 命令行发送邮件的 5 种方法
  10. 打包巨慢怎么办?这些工具让你爱不释手