跑1次看执行时间:time program xxx yyy zzz
跑5次看平均时间:runtime –5 program xxx yyy zzz
一些时间参数:
进程优先级:
at 指定时间执行某项任务
atq / at -l 查看任务队列
atrm 删除某个任务
cron 周期性的重复执行某项任务。
编辑cron任务列表:
UNIX系统假设所有的teletypes是全双工的,且使用remote echo。即,系统可以与teletype双向同时通信,且除非用户要求teletype才会打印出用户输入的内容。
终端模式:
虚拟终端接口 pseudo teletypes / ptys
POSIX定义标准接口,both at the UNIX kernel level and for the stty command
RTS/CTS 流控制
查看终端配置 stty -a
expand 将tab置换为空格
termcap & terminfo
pr 整理输出格式
lpr 打印
troff / TeX / Scribe
ps 相关程序
$? 返回程序执行状态
脚本中的 "$@" 会将命令行参数都加上 "" 。
$# 指命令行参数个数
shift 移出一个命令行参数
getopt 解析命令行参数
source scriptfile 在当前shell读入脚本,而非新建一个子shell
#无限循环,
while :
do
commands
done
m >& n 使m指向与n相同的位置
command 3>&2 2>&1 1>&3 交换STDOUT及STDERR,解释见图 45.3 - 45.6
m <& - 关闭输入文件描述符m
m >& - 关闭输出文件描述符m
<&- 关闭stdin
>&- 关闭sdtout
sh < file 读入file文件内容,然后返回
sh file 执行file文件中的指令
数学表达式:i=`expr "$i" + 1`
正则匹配结束位置:
$ part="resistor 321−1234−00" name="Ellen Smith"
$ expr "$part" : '[a−z ]*[0−9]'
10
$ len=`expr "$name" : '[a−zA−Z]*'`
$ echo first name has $len characters
first name has 5 characters
解析字符串:
last=`expr "$*" : '.* \(.*\)'` # LAST ARGUMENT
first=`expr "$*" : '\(.*\) .*'` # ALL BUT LAST ARGUMENT
取第三栏:
string="this:is:just:a:dummy:string"
field3_awk=`echo "$string" | awk −F: '{print $3}'`
field3_cut=`echo "$string" | cut −d: −f3`
删掉0-25列:
echo "The answer is `echo \"$text\" | awk '{print substr($0,25)}'`"
echo "The answer is `echo \"$text\" | cut −c25−`"
多层子命令:
$ echo "Next year will be 19$(expr $(date +%y) + 1)."
Next year will be 1997.
跑5次看平均时间:runtime –5 program xxx yyy zzz
一些时间参数:
- 用户态 CPU 时间:执行库函数,但不包括其中的系统调用。
- 系统态 CPU 时间:系统调用及程序管理函数。
- 系统 I/O 时间
- 网络 时间
- 其他程序运行时间
- 虚拟内存效率
进程优先级:
- nice +n command 高优先级
- nice –n command 低优先级
- renice 重调优先级
at 指定时间执行某项任务
atq / at -l 查看任务队列
atrm 删除某个任务
cron 周期性的重复执行某项任务。
编辑cron任务列表:
$ crontab −l > mycron $ vi mycron $ crontab mycron
41. Terminal and Serial Line Settings
teletypes 缩写为 ttys,串口通信。
UNIX系统假设所有的teletypes是全双工的,且使用remote echo。即,系统可以与teletype双向同时通信,且除非用户要求teletype才会打印出用户输入的内容。
终端模式:
- raw:不处理输入输出字符,直接传给程序
- cooked:内核对输入输出字符做转换
- cbreak:有些控制字符(如中断、退出、挂起等)被解释,其他字符不动
虚拟终端接口 pseudo teletypes / ptys
POSIX定义标准接口,both at the UNIX kernel level and for the stty command
RTS/CTS 流控制
查看终端配置 stty -a
expand 将tab置换为空格
termcap & terminfo
42. Problems with Terminals & 43. Printing
查看 term 行、列数:stty sizepr 整理输出格式
lpr 打印
troff / TeX / Scribe
ps 相关程序
44. Shell Programming for the Uninitiated
cat / cut / sort / grep / sed / awk$? 返回程序执行状态
脚本中的 "$@" 会将命令行参数都加上 "" 。
$# 指命令行参数个数
shift 移出一个命令行参数
getopt 解析命令行参数
source scriptfile 在当前shell读入脚本,而非新建一个子shell
45. Shell Programming for the Initiated
#无限循环,
while :
do
commands
done
m >& n 使m指向与n相同的位置
command 3>&2 2>&1 1>&3 交换STDOUT及STDERR,解释见图 45.3 - 45.6
m <& - 关闭输入文件描述符m
m >& - 关闭输出文件描述符m
<&- 关闭stdin
>&- 关闭sdtout
sh < file 读入file文件内容,然后返回
sh file 执行file文件中的指令
数学表达式:i=`expr "$i" + 1`
正则匹配结束位置:
$ part="resistor 321−1234−00" name="Ellen Smith"
$ expr "$part" : '[a−z ]*[0−9]'
10
$ len=`expr "$name" : '[a−zA−Z]*'`
$ echo first name has $len characters
first name has 5 characters
解析字符串:
last=`expr "$*" : '.* \(.*\)'` # LAST ARGUMENT
first=`expr "$*" : '\(.*\) .*'` # ALL BUT LAST ARGUMENT
取第三栏:
string="this:is:just:a:dummy:string"
field3_awk=`echo "$string" | awk −F: '{print $3}'`
field3_cut=`echo "$string" | cut −d: −f3`
删掉0-25列:
echo "The answer is `echo \"$text\" | awk '{print substr($0,25)}'`"
echo "The answer is `echo \"$text\" | cut −c25−`"
多层子命令:
$ echo "Next year will be 19$(expr $(date +%y) + 1)."
Next year will be 1997.
chapter 46 - 53
#查找某程序的可执行文件,源码,手册页
#有-b(可执行文件), -s(源码), -m(手册页)等单独对应的选项
$ whereis more
more: /bin/more /usr/share/man/man1/more.1.gz /usr/share/man/man1/more.1p.gz
#某个指令对应的具体程序
$ which more /bin/more
segmentation fault (core dumped):程序试图读或写某个未分配给它的内存地址,可能是指向非法地址或不止一个进程同时访问等等。
格式化时间输出:
#有-b(可执行文件), -s(源码), -m(手册页)等单独对应的选项
$ whereis more
more: /bin/more /usr/share/man/man1/more.1.gz /usr/share/man/man1/more.1p.gz
#某个指令对应的具体程序
$ which more /bin/more
segmentation fault (core dumped):程序试图读或写某个未分配给它的内存地址,可能是指向非法地址或不止一个进程同时访问等等。
格式化时间输出:
$ date +'Today is %Y-%m-%d.' Today is 2009-05-09.
新建一个文件100k-file,共12800行,每行内容均为"1234567":
yes 1234567 | head -12800 > 100k-file
没有评论:
发表评论