菜鸟学Linux 第037篇笔记 脚本知识、实现任务计划

简介:

菜鸟学Linux 第037篇笔记 脚本知识、实现任务计划 




cross compile: 交叉编译

x86, 32bit, 此平台编译一个程序无法在其它平台上运行

ARM


用A平台编译非A平台上运行程序的编译方式称为交叉编译



如何实现部分编译

1、只编译某子目录下的相关代码

make dir/subdir


2、只编译部分模块

make M=drivers/net


3、只编译某一模块

make drivers/net/pcnet32.ko

4、将编译完成的结果放置于其它目录中

make O=/root/kernel

6、交叉编译

make ARCH=

脚本编程知识点

1、取变量中字符的长度:${#VAR_NAME}

unset 取消变量的值

2、变量赋值

${parameter:-word} 如果parameter值为空或未定义则展开为"word", 否则展开该变量的值

${parameter:+word} 如果parameter值为空或未定义,不做任何操作;否则展开为world值

此上两种不会修改parameter本身的值

${parameter:=word} 如果parameter值为空或未定义,则变量展开为"word"

并且将展开后的值赋值给parameter


${parameter:offset:length} 取字串,从offset处的后一个字符开始,取lentgh个字串

${parameter:offset}  如果未指定length则取到尾


3、脚本配置文件

. /etc/inittab 在脚本里插入此行证明.后所跟的路径文件被引用到当前脚本中

/etc/rc.d/init.d/服务脚本

这些服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件


4、定义局部变量

语法 local VAR_NAME=

如果函数中的变量和全局变量重名如果函数里的变量未加local会影响全局的变量

a=1

test() {

  local a=$[3+4]

}


test

for I in `seq $a 10`; do

echo $I

done


5、命令mktemp

创建临时文件或目录

mktemp /tmp/file.XX 

-d 临时目录 将其值保存在变量里,以后就可以拿来引用


6、信号

kill -SIGNAL PID

1 HUP

2 INI

9 KILL

15 TERM

SIGHUP        1       Term    Hangup detected on controlling terminal

                                  or death of controlling process

SIGINT        2       Term    Interrupt from keyboard

SIGQUIT       3       Core    Quit from keyboard

SIGILL        4       Core    Illegal Instruction

SIGABRT       6       Core    Abort signal from abort(3)

SIGFPE        8       Core    Floating point exception

SIGKILL       9       Term    Kill signal

SIGSEGV      11       Core    Invalid memory reference

SIGPIPE      13       Term    Broken pipe: write to pipe with no readers

SIGALRM      14       Term    Timer signal from alarm(2)

SIGTERM      15       Term    Termination signal

脚本中,能实现信号捕捉,但9和15无法捕捉

Ctrl+c: SIGINT


trap 命令

语法 trip 'COMMAND' 信号列表


7、一行执行多个语句,语句间用分号分隔

捕捉中断可以定义函数(建议中断时清理脚本所产生的垃圾文件)



如何实现任务计划


1.在未来的某个时间点执行一次某任务

at

语法

at time

at> COMMAND

AT> Ctrl+d

指定时间

绝对时间 HH:MM, DD.MM.YY MM/DD/YY

相对时间 now+#

单位 minutes, hours, weeks

模糊时间 noon, midnight, teatime(下午四点),

命令的执行结果:将会以邮件的形式发送给安排任务的用户 

-l|atq 显示任务

at -d AT_JOB_ID = atrm AT_JOB_ID 删除任务

The  superuser  may  use  these  commands  in any case.  For other

users,  permission  to  use  at  is  determined   by   the   files

/etc/at.allow and /etc/at.deny.


If  the  file /etc/at.allow exists, only usernames mentioned in it

are allowed to use at.


If /etc/at.allow does not exist, /etc/at.deny  is  checked,  every

username not mentioned in it is then allowed to use at.


If neither exists, only the superuser is allowed use of at.


An  empty  /etc/at.deny means that every user is allowed use these

commands, this is the default configuration.


The at daemon can be  configured  through  the  /etc/sysconfig/atd

configuration file, which contains examples of settings.

batch

执行格式与at相同,但不需要指定时间,会在空闲时间自动执行

2.周期性的执行某任务

cron 自身是一个不间断运行的服务

(daemon to execute scheduled commands (ISC Cron V4.1))

anacron (runs commands periodically)cron的补充

能够实现让cron因为各种原因在过去的时间该执行而未执行的任务

在恢复正常时将其执行一次(服务器默认不启动)

cron:

系统cron任务(格式和用户的cron不同)

/etc/crontab

分钟 小时 天 月 周 用户 任务

用户cron任务

/var/spool/cron/USERNAME

分钟 小时 天 月 周 任务

cron时间定义

时间的有效取值

分钟 0-59

小时 0-23

 1-31

 1-12

 0-7, 0和7都表示周日

时间通配表示

* 对应的所有有效取值

3 * * * * 每个小时第3分钟执行任务

3 * * * 7 周日每小时第3分钟执行任务

3 * 3 * 7 周日并且还是3号的每小时第三分钟执行任务

(第三个只做演示,一般周和天不建议同时指定)

离散时间点

10,40 02 * * 2,5 周二和周五的2:10和2:40分执行任务

- 连续时间点

10 02 * * 1-5 周一到周五的2:10执行任务

(注意不同,一个间断,一个连续)

/ 对应取值范围内每多久一次

*/3 * * * * 每三分钟执行一次任务

小练习 用上边的格式写出如下需求:

每两小时执行一次

01 */2 * * * 

每两天执行一次

01 01 */2 * *

注意大单位每多久执行一次时,小单位建议给具体值不然(你懂得)

cron执行结果将以邮件形式发送给管理员

*/3 * * * * cat /etc/fstab > /dev/null

这样执行的含义是正常的信息不会发mail给管理员重定向原理,前边章节讲过

cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去寻找

PATH /bin:/sbin:/usr/bin:/usr/sbin

如果任务执行的是脚本,则在脚本中指定环境变量

#!/bin/bash

export PATH=



修改系统cron任务

修改/etc/crontab文件即可

修改用户cron任务

crontab (maintain  crontab files for individual users (ISC CronV4.1))

-l    The current crontab will be displayed on standard output. 

-e    This option is used to edit the current crontab  using  the

  editor  specified by the VISUAL or EDITOR environment vari-

  ables.  After  you  exit  from  the  editor,  the  modified

  crontab will be installed automatically.

-r    The current crontab will be removed.

-u USERNAME -e  作为管理员可以编辑其它用户的cron任务

最后如果想要任务执行必须确保cron服务处于启动状态(默认启动)

service crond {start|stop|restart|status}

anacron

/etc/anacrontab

service anacron {start|stop|restart|status}

20 3 */2 * * /

#!/bin/bash

#

export PATH=/bin

cd /

[ ! -d /backup/etc ] mkdir -p /backup/etc

tar -cjf /backup/etc/etc-`date +%Y-%m-%d`.tar.bz2 

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1879950如需转载请自行联系原作者


Winthcloud

相关文章
|
1月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
117 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
15天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
19天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
30天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
82 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
35 1
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
450 2
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
25 0
|
2月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
22 3