linux 系统应用与程序设计

29
Linux 系 系系系系系系 系系 系系系 系系[email protected]

Upload: chinue

Post on 23-Jan-2016

98 views

Category:

Documents


0 download

DESCRIPTION

Linux 系统应用与程序设计. 主讲:邝颖杰 电邮: [email protected]. 进程的概念. Linux 系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理任务,都可以称之为进程。进程是一个程序的运行。 进程与程序是有区别的。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。. 进程的概念. Linux 操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性: 交互进程 : 由 shell 启动的进程。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux  系统应用与程序设计

Linux 系统应用与程序设计

主讲:邝颖杰

电邮: [email protected]

Page 2: Linux  系统应用与程序设计

进程的概念 Linux 系统上所有运行的东西都可以称之为一

个进程。每个用户任务、每个系统管理任务,都可以称之为进程。进程是一个程序的运行。

进程与程序是有区别的。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。

Page 3: Linux  系统应用与程序设计

进程的概念 Linux 操作系统包括三种不同类型的进程,

每种进程都有自己的特点和属性: 交互进程 : 由 shell 启动的进程。 批处理进程 : 这种进程和终端没有联系,是

一个进程序列。 守护进程 : 在后台持续运行的进程。

Page 4: Linux  系统应用与程序设计

启动进程 / 手工启动 前台启动 : 一般地,用户键入一个命令,就

已经启动了一个前台的进程。 后台启动 : 对于非常耗时进程,可以让进

程在后台运行。从后台启动进程其实就是在命令结尾加上一个“ &” 号

Page 5: Linux  系统应用与程序设计

启动进程 / 调度启动 1 ) at 命令

在 shell 提示符下输入” at 时间”,然后按回车键。这时在下一行 shell 会等待用户继续输入要执行的命令。每一行输入一个命令,所有命令都输入完毕后按 Ctrl+d 键结束。

将各个命令写入 shell 脚本中,然后使用下面格式设置在指定时间执行 shell 脚本中的命令:

at 时间 – f 脚本文件。 batch 命令

Page 6: Linux  系统应用与程序设计

启动进程 / 调度启动 /cron 命令 cron 命令在系统启动时由一个 shell 脚本自动启动,进入后台。 cron 启动后搜索 /var/spool/cron 目录,寻找以 /etc/passwd 文

件中的用户名命名的 crontab 文件,被找到的这种文件将载入内存。

如果没有 crontab 文件,就转入“休眠”状态,释放系统资源。 cron 每分钟“醒”过来一次,查看当前是否有需要运行的命

令。 如果发现某个用户设置了 crontab 文件,它将以该用户的身份

去运行文件中指定的命令。命令执行结束后,任何输出都将作为邮件发送给 crontab 的所有者,或者 /etc/crontab 文件中MAILTO 环境变量中指定的用户。

Page 7: Linux  系统应用与程序设计

cron

crontab 文件格式 59 23 * * * tar czvf lhy.tar.gz /home/lhy

crontab 命令用于安装、删除或者列出用于驱动 cron 后台进程的 crontab 文件 :

crontab 源文件格式<minute> <hour> <day-of-month> <month-of-year>

<day-of-week> <commands>

59 23 * * * tar czvf lhy.tar.gz /home/lhy

Page 8: Linux  系统应用与程序设计

格式crontab [ - u user ] 文件crontab [ - u user ] { - l | - r | - e }

主要参数- e :执行文字编辑器来设定时程表,内定的文字编辑器是 vi- r :删除目前的时程表- l :列出目前的时程表

和 at 命令相比, crontab 命令适合完成固定周期的任务

Page 9: Linux  系统应用与程序设计

Crontab 举例 以某一用户终端,输入 crontab - e

此时系统会打开一个 vi 编辑器 在该编辑器中输入 35 17 * * 5 wall

"Tomorrow is Saturday I will go CS"

Page 10: Linux  系统应用与程序设计

进程管理命令 进程查看命令 ps ps [ 选项 ] 主要选项的含义如下:

-e :显示所有进程;-h :不显示标题;-l :采用详细的格式来显示进程;-a :显示所有终端上的进程,包括其他用户的进程;-r :只显示当前终端上正在运行的进程;-x :显示所有进程,不以终端来区分;-u :以用户为主的格式来显示进程;

Page 11: Linux  系统应用与程序设计

删除进程命令 killkill [-s < 信号 > | -p ] [ -a ] < 进程号 > ..

kill [-s < 信号 > | -p ] [ -a ] < 进程号 > ...

kill -l [ 信号 ]

选项的含义如下:-s :指定需要送出的信号。既可以是信号名也可以是信号名对应

的数字。-p :指定 kill 命令只显示命名进程的 pid ,并不真正送出任何信号。-l :显示信号名称列表,该列表也可以在 /usr/include/linux/

signal.h 文件中找到。

Page 12: Linux  系统应用与程序设计

强行中止(经常使用杀掉)一个进程标识号为324 的进程:# kill - 9 324

解除 Linux 系统的死锁 使用命令回收内存 killall 命令

Linux 下还提供了一个 killall 命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -HUP inetd

Page 13: Linux  系统应用与程序设计

系统监视 系统监控命令 top :能显示实时的进程列

表,而且还能实时监视系统资源,包括内存、交换分区和 CPU 的使用率等。

Page 14: Linux  系统应用与程序设计
Page 15: Linux  系统应用与程序设计

top 命令使用过程中,可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。<空格 > :立刻刷新。P :根据 CPU 使用大小进行排序。T :根据时间、累计时间排序。q :退出 top 命令。m :切换显示内存信息。t :切换显示进程和 CPU 状态信息。c :切换显示命令名称和完整命令行。M :根据使用内存大小进行排序。

Page 16: Linux  系统应用与程序设计

内存查看命令 free

磁盘空间用量查看命令 df

Page 17: Linux  系统应用与程序设计

图形化的系统监视器

Page 18: Linux  系统应用与程序设计
Page 19: Linux  系统应用与程序设计

日志查看 日志文件( log files)是包含关于系统消息的文

件,包括内核、服务、在系统上运行的应用程序等。

不同的日志文件记载不同的信息。 多数的日志文件位于 /var/log 目录下。 某些程序(如 apache)在 /var/log 中有单独的日志文件目录。

日志可以滚动

Page 20: Linux  系统应用与程序设计
Page 21: Linux  系统应用与程序设计

日志查看 多数日志文件都使用纯文本格式,可以使

用任何文本编辑器如 vi 来查看它们。大多数日志文件都需要拥有特权才允许查

看。 图形化的日志查看器

Page 22: Linux  系统应用与程序设计
Page 23: Linux  系统应用与程序设计

Grep 用法 grep ( global search regular

expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具

使用正则表达式搜索文本 linux 使用 GNU版本的 grep

Page 24: Linux  系统应用与程序设计

grep 正则表达式元字符集(基本集) ^

锚定行的开始 如: '^grep'匹配所有以 grep 开头的行。 $

锚定行的结束 如: 'grep$'匹配所有以 grep 结尾的行。 .

匹配一个非换行符的字符 如: 'gr.p'匹配 gr 后接一个任意字符,然后是p 。

* 匹配零个或多个先前字符 如: '*grep'匹配所有一个或多个空格后紧跟

grep 的行。 .* 一起用代表任意字符。 []

匹配一个指定范围内的字符,如 '[Gg]rep'匹配 Grep 和 grep 。 [^]

匹配一个不在指定范围内的字符,如: '[^A-FH-Z]rep'匹配不包含 A-R 和T-Z 的一个字母开头,紧跟 rep 的行。

\(..\) 标记匹配字符,如 '\(love\)' , love 被标记为 1 。

Page 25: Linux  系统应用与程序设计

\< 锚定单词的开始,如 :'\<grep'匹配包含以 grep 开头的单词的行。

\> 锚定单词的结束,如 'grep\>'匹配包含以 grep 结尾的单词的行。

x\{m\} 重复字符 x , m 次,如: '0\{5\}'匹配包含 5 个 o 的行。

x\{m,\} 重复字符 x,至少m 次,如: 'o\{5,\}'匹配至少有 5 个 o 的行。

x\{m,n\} 重复字符 x ,至少m 次,不多于 n 次,如: 'o\{5,10\}'匹配 5--10 个 o 的

行。 \w

匹配文字和数字字符,也就是 [A-Za-z0-9] ,如: 'G\w*p'匹配以 G 后跟零个或多个文字或数字字符,然后是 p 。

\W \w 的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b 单词锁定符,如 : '\bgrep\b' 只匹配 grep 。

Page 26: Linux  系统应用与程序设计

$ ls -l | grep '^a' 通过管道过滤 ls -l 输出的内容,只显示以 a 开头的行。

$ grep 'test' d* 显示所有以 d 开头的文件中包含 test 的行。

$ grep 'test' aa bb cc 显示在 aa , bb , cc 文件中匹配 test 的行。

$ grep '[a-z]\{5\}' aa 显示所有包含每个字符串至少有 5 个连续小写字符的

字符串的行

Page 27: Linux  系统应用与程序设计

awk 命令最基本功能是在文件或字符串中基于指定规则浏览和抽取信息

df | awk '$4>1000000 ' 通过管道符获得输入,如:显示第 4 个域满足条件的行

Page 28: Linux  系统应用与程序设计

实验任务一: 编写一个 Shell 过程完成如下功能(必须在脚本

中使用函数):1 、合并两个 $1 、 $2 文件为 $3 ,并显示。2 、如果缺少 $3 ,那么先报告缺少 $3 ,然后将合并后的内容输出到 mydoc.txt 。如果有 $3 ,就合并到 $33 、如果缺少 $2 、 $3那么先报告缺少 $2 、 $3 ,只显示 $1 的内容。

Page 29: Linux  系统应用与程序设计

实验任务二: 利用所学知识,实现如下目标:

某用户需要在每天晚上 11 点启动服务器的 ftp服务,使得其他用户可以上传重要数据。而在每天凌晨 3 点就关闭ftp服务。在这个过程中要自动记录日志信息,每天是否成功启动 ftp 要体现在日志信息中,如果成功启动必须记录 ftp 的进程信息,如果没有启动,就记录错误信息。约定如下:日志文件为 /tmp/ftplog

实验任务二在上机检查时应把时间调整为当前具体可行的时间。