crontab运行脚本存在两大问题:环境变量和路径,从而导致单独运行脚本没问题,但用crontab运行就报错. 1.环境变量 描述问题:crontab: usage error: no arguments permitted after this option 因为crontab不提供环境,所以需要自己在shell中加入,或者全部用绝对路径.简单的方法:控制台输入 [user@a ~]# echo $PATH /your/path/:/your/path/……………… 然后在脚本中export…
问题出现的场景大概就是 1  cron调用一个python脚本 2  python脚本中调用一个shell脚本(对日志分析)获取shell输出然后发送邮件 类似一个监控任务. 直接运行python脚本没有问题,可是写在cron中之后.shell脚本中的相对路径就找不到了,总是提示无法找到某些文件 后来解决的问题就是使用log文件的绝对路径,执行就正常了. google了一些,发现非常多人也遇到过类似的问题,可能和cron的机制有关系. 大部分人的问题都是由于环境变量造成的.由于cron是一个独立…
Shell脚本不同的运行方式会对当前Shell设置或者运行结果有所不同. 假设现在有一个脚本名为display_shell_script_args.sh,其内容如下: #!/home/pyf/bin/echoarg arg_infile other_arg_infile  echo $# while [ $# != '0' ] do echo $0 done echo $0 echo "Hello, shell!" echo -e "Hello, sh!" 这里的e…
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time...    shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一种命令语言,同时呢还是一种程序设计语言.shell脚本(shell script),是一种为shell编写的脚本程序.业界所说的shell通常都是指shell脚本,但是各位看官要知道的是,shell和shell script是两个不同的概念.由于习惯的原因,简介起见,本文出现的“shell编程”都是…
使shell脚本后台执行,基本的方法有两种,第一种为在脚本后面追加&符号,第二种为在脚本前面使用nohup命令,结尾再追加&符号 一.后台运行脚本1 1.执行脚本test.sh:./test.sh 2.中断脚本test.sh:ctrl+c 3.在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 4.执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行("number"是使用jobs命令查到…
实例一 test.sh文件 echo `date`>test.log 配置crontab 设置 */1 * * * * sh /data/test.sh 在/data/目录下,未找到test.log文件,重启了crontab服务,service cronb restart,发现还是不行. 在网上找资料,怀疑是相对路径的问题,然后,在home目录下,cd ~,发现了test.log. 转摘资料: crontab执行java程序的问题: 一 crontab使用注意: crontab -l查看该用户的…
问题的由来 写好的程序希望在崩溃之后能够自启动,于是利用linux的crontab功能,添加一个计划任务,每分钟执行一个脚本查看需要监控的进程是否还在,如果不在则启动之,否则不做任何事情.这么一个简单的脚本在crontab中运行和在shell终端手工运行的结果却不一样. 问题描述 以下是监控脚本/home/watch.sh的内容: #!/bin/sh shell_log_file=/home/start.log pid_count=`pidof video_checkup | wc -w` pa…
Shell简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务. Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell. Shell运行原理 Linux严格意义上是一个操作系统,我们称为核心,但我们一般的用户是不能直接使用核心的,而是通过…
运行顺序和eval shell从标准输入或脚本中读取的每一行称为管道,它包括了一个或多个命令,这些命令被一个或多个管道字符(|)隔开. 其实嗨哟非常多特殊符号可用来切割单个的命令:分号(;),管道(|),&,逻辑AND(&&),逻辑OR(||).对于每个地区的管道,shell都会将命令切割,为管道设置I/O,而且对每个命令依次运行以下的操作. 看起来非常复杂,可是每一个步骤都是在shell的内存里发生的,shell不会真的把每一个步骤的发生演示给我们看.所以这是我们分析shell内…
Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1.2和图1.3所示.此时显示的是一个内容列表页面.该页面是通过Views文件夹中的ItemsPage.xaml和ItemsPage.xaml.cs文件实现的.页面数据是通过绑定ViewModels文件中的ItemsViewModel.cs文件实现的.…
需求 线上环境有一些定时脚本(用crontab -l可查看当前用户的),有时我们可能会改这些定时任务的脚本内容.为避免改错无后悔药,需用shell实现一个程序,定时备份crontab中的.sh脚本文件 分析与思考 所有用户的crontab放在/var/spool/cron/目录,各个用户放在各自目录下.只要把这些用户的crontab读取出来,提取出其中的.sh文件,然后按照用户备份到相应目录就行.最后配一个crontab,定时去执行这个备份程序. 备份程序的实现 #!/bin/bash # th…
由于过多的日志很占用磁盘空间,今天经理让我写一个脚本删除多余的日志.和es索引 定时删除试根据crontab+shell脚本实现的 crontab配置目录 /var/spool/cron/ 该目录下存放的是每个用户(包括root)的crontab任务,文件名以用户名命名 /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本. crontab操作步骤 Step-One : 编辑任务脚本[分目录存放][ex: backup.sh] Step-Two : 编辑定时文件[命名规…
shell实例利用crontab自动清除日志 程序运行会产生很多的日志,对于无用的日志手动删除比价麻烦,写一个自动执行的命令是很有必要的. 删除文件shell命令 find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 具体的命令如下: find /mnt/tomcat/logs/ -mtime +35 -name "*.log" -exec rm -rf {} \; 参数及说明: 整句的作用是将 /mnt/tomca…
一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行.       Python有时需要保证只运行一个脚本实例,以避免数据的冲突. 二.Python守护进程 1.函数实现 #!/usr/bin/env python #coding: …
Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例 一.调用java程序脚本(默认已经搭建好了Java环境) 1.jdk 安装路径 /usr/jdk/jdk1.7/-- 2.java 程序路径 /usr/jdk 3.类名:Test.java(有主函数的类名) 4.调用java类的脚本,注意脚本的后缀是.sh 5.脚本内容: (1)#! /bin/bash // #! 特殊符号.说明这个脚本是由/bin 文件夹下的bash这个shell来解释并将解释后的内容给kernel来…
目录 一.shell基础 书写规范 引号 配置文件 read交互 脚本调式 小节总结 二.变量 变量类型 位置变量 状态变量 替换和删除 变量补充 变量运算 小节总结 三.相关脚本面试题 统计history的top10 备份 内存用量报警 取各种值 无聊的题目 反复更名 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步. 个人博客:传送阵 笔者微信:zhanghe15069028807,非诚勿扰. 一.shell基础…
背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动输入某些内容来使得程序或命令继续运行的目的.如安装软件是时的一些提示,ssh远程主机执行命令时需要多次输入密码的情况. 安装expect 安装依赖:yum install tcl -y 安装expect:Centos系统yum install expect -y或Ubuntu系统ap…
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了.输入一些代码: #!/bin/bash echo "Hello World !" “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本.运行Shell脚本有两种方法. 作为可执行程序 将上面的代码保存为test.sh,并 cd 到相应目录: 将上面的代码保存为…
前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. $@ 传递给脚本或函数的所有参数.被双引号(" &q…
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用…
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 作为可执行程序 将上面的代码保存为test.sh,并 cd 到相应目录: chmod +…
好久不用shell了,今天碰到一个坑,发现exit后,shell脚本还会运行. $JAVA_HOME/bin/jps | while read RES do PID=`echo $RES | awk '{print $1}' ` NAME=`echo $RES | awk '{print $2}' ` if [ $NAME = 'Jps' ]; then continue fi GC_OLD_PERC=`$JAVA_HOME/bin/jstat -gcutil $PID|sed -n '2p'|…
1 传递参数的基本格式 在脚本的需要参数的地方写$1,$2,$3...$n,运行的时候带参数运行就相当于是专递参数进shell脚本里了,比如: ./t1.sh 1 2 #!/bin/bash echo "daqing is $1" echo "erqing is $2" echo " u totally give me $# arguements"    $#用于统计一共传递了多少个参数进来.    输出结果: daqing is 1;erqin…
sh脚本文件的运行mac终端下运行shell脚本 1.写好自己的 脚本,比如test-bash.sh 2.打开终端 执行,方法一: 输入命令 ./test-bash.sh , 方法二:直接把 aa.sh 拖入到终端里面. 问题:wanghuideMBP:~ wanghui$ ./test-bash.sh-bash: ./test-bash.sh: Permission deniedwanghuideMBP:~ wanghui$ chmod 777 test-bash.shwanghuideMBP…
1.第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行 输入一些代码 #!/bin/bash echo 'Hello World!' #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell. echo 命令用于向窗口输出文本. 2.运行 Shell 脚本有两种方法 2.1 作为可执行程序 chmod +x ./test.sh #使脚本具有执行权…
命令的组合: 1. 多个命令的顺序分隔:     1. 顺序分隔,使用 ; 顺序执行;     2. 逻辑与分隔, 使用 && ,  一旦前面的命令执行失败,后面的命令就不会执行;     3. 逻辑或分隔, 使用 || ,  一旦前面的命令执行失败,后面的命令才会执行;    一个很有用的组合逻辑分隔:命令1 && 命令2 || 命令3: 当命令1成功时会执行命令2, 当命令1失败时,会执行命令3; 重定向: 类型  设备文件 文件描述号 默认设备 标准输入 /dev/s…
用crontab执行shell把top命令按日期追加到文件 详细图文解说请到本人原创百度经验http://jingyan.baidu.com/article/3052f5a1daf11197f21f8648.html 解决crontab定时输出top不执行办法 top -n 1不能在 crontab中使用,要加一个参数top -b -n 1 需求:在linux服务器用crontab执行shell基本把top命令结果按日期追加到文件. 常见问题:1.直接执行命令可以正常,放到shell脚本里面执行…
问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径.在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell.这算是cmd与dos的最大区别,一个只是接口.一个是操作系统.只是cmd中的…
centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和${ } 和$(( )) 与  sh -n  sh -x  sh -v 第三十五节课 Shebang/Sha-bang在计算机科学中, Shebang (也称为Hashbang)是一个由井号和叹号构成的字符串行(#!), 其出现在文本文件的第一行的前两个字符. 在文件中存在Shebang的情况下, 类…
问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径.在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell.这算是cmd与dos的最大区别,一个只是接口.一个是操作系统.只是cmd中的…