1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > (shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务

(shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务

时间:2018-12-07 13:33:48

相关推荐

(shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务

文章目录

shell脚本编程条件语句脚本执行多条命令执行定时任务

本文着重于提高我们的生产力,所以将这几个作为了一个专题。

shell脚本编程

脚本中不同语句用分号隔开,和c语言一样。

for, do, done是sh脚本语言的关键字。

在shell脚本开头写上:

#!/bin/bash“#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。

变量:定义变量时,变量名不加美元符号($),如:

your_name="qinjx"

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"echo $your_name#或者echo ${your_name}

推荐给所有变量加上花括号,这是个好的编程习惯。

字符串:字符串可以用单引号,也可以用双引号,也可以不用引号。

str='this is a string'

单引号字符串的限制:

•单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

•单引号字串中不能出现单引号(对单引号使用转义符后也不行)

双引号条中转义字符只在下面情况生效,单引号什么都不生效。

\$表示$的字面值\`表示`的字面值\"表示"的字面值\\表示\的字面值除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值。

另外,双引号中可以使用变量。

条件语句

if 条件测试操作then命令序列fi

示例如下:

if [ $a = "男" ]thenecho "$a 组"elseecho "女 组"fi

脚本执行多条命令

比如我们要添加镜像源的时候,要添加很多,那么我们可以使用shell脚本来帮助我们,但是问题在于命令之间用什么来隔开呢?

每个命令之间用;隔开

说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,

但不保证每个命令都执行成功。

每个命令之间用&&隔开

说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

每个命令之间用||隔开

说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功

一条命令为止。

新建一个文件,随便命名,打开这个文件,我们选择1,然后保存退出,如下:

最后执行:

sh condac.sh##上述名称

发现成功添加了这么多的镜像源:

执行定时任务

执行这种任务,是靠crond服务程序来完成的,所以你得看这个服务程序是否打开,以Centos为例,如下:

systemctl status crond

如果是active的状态,说明可以使用,我们使用crontab工具:

#编辑定时任务:crontab -e#默认会进入vi编辑器

其格式

格式: * * * * * command分 时 日 月 周 命令

1、crontab -e 回车2、添加任务,并保存#每天下午19:00定时关机55 18 * * * /usr/sbin/shutdown -h 19:0000 19 * * * /usr/sbin/shutdown now#同上。* * * * * echo 123#每一秒钟都输出123.0 */1 * * *#每小时执行。3、查看任务列表crontab -l

#查看定时任务执行情况:tail -f /var/log/cron#看最近情况cat /var/log/cron#看全部

需要注意一些坑:

我用ssh登录的时候,在定时任务里面使用ls打印目录,但是根本不会在我的ssh屏幕上显示!但是这个任务其实是已经执行了的,不信,你可以将ls的输出重定向到文件来验证。类似的还有上述echo这样的,也是。ls这种可以不使用ls的绝对路径,我们看到上述使用了/usr/sbin/shutdown,这种是绝对路径,一般来说系统内置的命令可以不使用绝对路径,但是你自己安装的一些程序,需要使用绝对路径!!!我就被坑了,比如python test.py,在命令行中这么用可以,但是在定时任务中不可以,需要填写python的绝对路径。不同定时任务之间,直接换行即可,不需要用;号分隔。你的定时任务中的命令如果不是绝对路径,即/开头的,那么都是Home目录的相对路径,这个也要切记。比如上面的python由于没有写绝对路径,就以为是执行home目录下的python!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。