「Efficient Android Threading 笔记」- C1 Android Components and the Need for Multiprocessing Android RecyclerView Android Socket Programming Supporting Multiple Screens Make a Reusable UI in Android App Development 如何在 Android Studio 中包含 *.so library,并使用库中定义的方法? 使用 SpannableString 格式化字符串,实现前景色、下划线、超链接、图文混排等 如何使用 bound service 完成进程间通信? 创建自定义视图 Creating custom views 通过 Android Theme & Style 定制应用的样式 「译」Android ViewPropertyAnimator 介绍 Android Animation Interpolator - Android 动画插值器源码笔记 「译」Android Animation in Honeycomb by Chet Haase(Android 3.0系统中的动画机制) 从 Android Sample ApiDemos 中学习 android.animation API 的用法 如何学习 Android Animation? 如何实现 Android ListView「上拉加载更多」? 「译」向Big Nerd Ranch提问:为什么Fragment在Android App开发中非常重要? 分类整理我在 SegmentFault 上针对某些问题作的回答 Android Servcie 后台服务总结笔记 如何在Android设备旋转时暂存数据以保护当前的交互状态? Android Message Handler 消息处理机制总结笔记 如何获取FragmentTabHost中指定标签页的Fragment? Fragment子类必须包含一个public无参构造器 如何更新及替换ViewPager中的Fragment? 如何使用Android UI Fragment开发“列表-详情”界面? 一个Android音频文本同步的英文有声读物App的开发过程 「Android编程权威指南笔记」Android应用本地化 通过jfeinstein10/SlidingMenu实现Android侧滑菜单 为Ubuntu14.04部署Android App的Eclipse开发环境 「Android编程权威指南笔记」使用ListFragment显示列表 「Android编程权威指南笔记」SDK版本与兼容 「Android编程权威指南笔记」Android布局和组件 「Android编程权威指南笔记」UI Fragment 「Android编程权威指南笔记」Activity 第一次开发iOS App和Android的对比总结笔记 「App Training笔记」创建第一个应用 「App Training笔记」开发入门训练大纲 Android APP - 从远程FTP服务器下载文件到本地

「Shell脚本学习指南笔记」第13章-进程

2014年04月15日

进程(process)是执行中程序的一个实例(instance)。涉及的概念:时间片段(time slice)、文本切换(context switches)、调度器(scheduler)、平均负载(load average)。详见操作系统类书籍。
本章只说明如何建立进程、列出进程、删除进程、传递信号给进程、监控进程。P363

英文版下载地址

进程建立


很多程序由shell启动:每个命令行里的第一个单词是识别要执行的程序。

进程列表


进程状态(process status)命令:ps。ps -efl以SystemV形式显示冗长信息;ps aux以BSD形式显示冗长信息。
命令top可以动态观察进程状态。

进程控制与删除


kill命令可以终止进程。通过传递信号(signal)给指定的进程,进程收到信号后,处理或忽略。
只有进程的拥有者、root、内核、进程本身,可以传送递信号给它。
kill -l 列出支持的信号名称。

删除进程的四个信号
ABRT(中断),HUP(搁置),KILL,TERM(终结)。TODO

捕捉进程信号
man -a signal 查看所有关于信号的手册页

进程系统调用的追踪


进程帐


延迟的进程调度


有4种方法可以延迟进程,直到设定的时间才执行。

sleep 休眠
sleep会使调用它的进程休眠,直至计时满时被调度器唤醒。只占用很少的资源。

at 在指定时间执行

# 在指定的时间,执行command-file里的命令
# atq命令列出队列里的所有工作,atrm删除
at 21:00             < command-file  在21:00执行
at now               < command-file  立刻执行
at now + 10 minutes  < command-file  10分钟后执行
at now + 10 hours    < command-file  10小时后执行
at 0400 tomorrow     < command-file  明天04:00执行
at 4 June            < command-file  6月4日执行
at teatime           < command-file  下午茶时间(16:00)执行

batch 采取批处理模式

crontab 重复执行计划任务

$ crontab -l
# 列出目前的corntab调度
# mm      hh      dd      mon     weekday         /path/to/command
# 00-59   00-23   01-31   01-12   0-6(0=Sunday)   /path/to/ command            
  15      *       *       *       *               每小时的第15分钟执行
  */15    *       *       *       *               每15分钟执行
  0       6       *       *       1               每周1的06:00点执行
  0       8-17    *       *       0,6             每周末的08:00至17:00间,每小时执行一次
  55      23      *       *       *               每天的23:55执行

crontab会把command中的%更换为换行符,加上反斜杠可以避免:

`date +\%Y.\%m.\%d`

crontab文件里的命令路径设置严格,通常仅/usr/bin,所以安全的做法是写出完整路径名称:

/usr/local/bin/your_command_file
PATH=/usr/local/bin:$PATH your_command_file

/proc文件系统


版本

li2 于上海闸北
2014-04-15 ~ 2014-05-15, v1


知识共享许可协议
li2的博客WeiYi.Li 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2017. All rights reserved by WeiYi.Li. Powerd by Jekyll & LinAnYa's Theme