Tag Archives: Shell

Linux Shell (8)-中断信号、脚本启动

1)  signal

Ctrl+C=SIGINT=kill  -9

Ctrl+Z=SIGTSTP=kill -18

2) trap 捕获信号

trap commands signals 捕获signals信号,执行commands

trap commands EXIT 捕获正常退出,执行commands

trap signals 移除捕获signals

3) nohup

nohup commands & 后台运行commands,输出到nohup.out

4) jobs 列出相关的作业列表

-l     列出进程PID和job编号

-p    列出作业PID

-r     列出运行的作业

-s     列出停止的作业

列表中显示”+”的作业为默认作业,显示”-“的作业为默认作业完成后将成为默认作业,在某一个时间点,只能有一个默认作业(“+”)和待将成为的默认作业(“-“)

5) bg\fg 后台\前台 重启停止的作业

bg\fg number 将作业号为number的作业启动

6) nice\renice 调整执行脚本的优先级(20~-20),默认为0

nice -n commands        指定优先级执行commands,如果为非系统用户只能降低优先级

renice number -p PID   调整运行中的进程PID优先级为number,非系统用户只能调整自己拥有的进程且只能调降

7) at\atq\atrm  定时执行作业\查询队列作业\删除队列作业

at -f shellfile time

time格式:10:08\10:08PM\now、noon、midnight\MMDDYY\Juln 4\Now + 30minutes

-q 执行优先级,默认为a最高优先级,a-z任一字母

-m 作业没有输出也发送消息(在/var/spool/at/下)

atq       列出系统中排队的作业

atrm    移除作业

 

8) crontab

cron文件格式:min hour dayofmonth month dayofweek command

-u   指定以哪个用户执行

-e   编辑cron

-l   列出当前的cron

 

Linux Shell (7)-输入输出-read、exec、lsof、mktemp、tee

1) read 读取用户输入

-n1 限定输入长度为1

-p 提示语

-t  等待输入的秒数

-s  将输入隐藏(密码输入等需求,这是个黑科技!!!)

若后面不加变量var的话,默认将输入存储在REPLY

2) 标准文件描述符,一个shell最多可以打开9个文件描述符

0  STDIN        标准输入(默认键盘)

1  STDOUT    标准输出(默认终端显示器)

2  STDERR     标准错误

3)

错误输出到文件:ls -al aaa 2>error.txt

正常输出到文件:ls -al aaa 1>out.txt

所有输出到文件:ls -al aaa &>all.txt

4)重定向输出

临时重定向:>&2或者 >&1

永久重定向:exec 1>out.txt

5) 重定向输入

exec 3<&0

exec 0< file

………

exec 0<&3

6)

exec 3<> file    创建读取写入文件描述符。注:读取、写入时的指针在同一位置

exec 3>&-    关闭文件描述符

7) lsof

-a 连接两个选项的输出结果

-p 进程ID,当前进程用$$表示

-d 指定要显示的文件描述符编号

输出属性

COMMAND     进程命令行名称前9个字符

PID                    进程ID

USER                 进程所属用户名

FD                      文件描述符编号、类型(r读、w写、u读写)

TYPE                  文件类型(CHR字符、BLK块、DIR目录、REG常规)

DEVICE              设备编号

SIZE                   可用情况下的大小

NODE                本地文件的节点编号

NAME                 文件名称

8) 禁止shell输出

1>/dev/null或者2>/dev/null

9) mktemp 创建临时文件

mktemp file.XXX

XXX为3个随机字符,长度按需指定,创建成功返回文件名

-t 强制在系统临时目录中创建临时文件并返回文件全路径,默认在当前目录

-d 创建临时目录

10) tee T型管道输出,不仅将管道输出到STDOUT还可以输出到另外的地方

-a 输出时追加

Linux Shell (6)-命令行选项、参数-shift、getopt、getopts

1)  定义

参数:命令行后面的数据值

选项:修改命令行为的单字符值,以-(破折号)开头

2)  命令行参数索引、长度:

$0-程序或者脚本名称的完整路径,如果只需要获取名称可以使用”basename $0“;

$1-第一个参数,$2-第二个参数,……,$9-第九个参数,${10}-第十个参数,此后的索引必须加{}

参数中不允许有空格,否则必须用引号;

$#-命令行参数的个数,如果获取最后一个参数应该使用${!#}而不是${$#}

$*-所有参数作为一个整体处理

$@-所有参数作为多个元素的集合处理

$$-当前脚本PID

3)  shift

左移每一个参数,$0保持不变,  $1被丢弃

4) 命令行中参数选项以(双破折号分隔),前为选项,后为参数

5)  getopt 格式化选项、参数

getopt options optstring parameters

optstring 标记选项是否需要参数,有参数选项字母后加:

-q 忽略产生的错误消息

set — ‘getopt -q a:bcd “$@”‘,将原有的命令行参数选项替换为getopt格式后的形式

6) getopts 每次只取一个选项

getopts optstring variable

忽略产生的错误消息,需要在optstring前面加:(冒号)

OPTARG 选项的参数值

OPTIND  选项的索引值

当选项获取完成后通过:

shift $(( OPTIND – 1))

$*

读取剩下的命令行参数