linux脚本

linux基础命令:sed

痴心易碎 提交于 2019-11-28 00:00:47
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来 -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑 -f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作 -r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法) -i∶直接修改读取的文件内容,而不是由屏幕输出 常用命令: a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容 i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行) p∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用 s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g 定址

linux启动程序和关闭程序脚本

早过忘川 提交于 2019-11-27 23:55:58
关闭脚本: #!/bin/bash source /etc/profile log() { echo `date +【%Y-%m-%d" "%H:%M:%S】` $1 } log "kill 168 begain" NAME=importFile168 echo $NAME ID=`ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}'` echo $ID echo "---------------" for id in $ID do kill -9 $id echo "killed $id" done log "kill 168 end" 启动脚本: #!/bin/bash source /etc/profile log() { echo `date +【%Y-%m-%d" "%H:%M:%S】` $1 } log "start 168 begain" nohup /home/data/168/program/jdk1.8.0_111/bin/java -Drun.type=loaddata -ms512m -mx1024m -jar /home/data/168/program/importFile168.jar >> /home/data/168/program/168.log 2>&1 & log "start

Linux下启动jar包的shell脚本

只愿长相守 提交于 2019-11-27 22:04:12
product-service.sh文件内容如下 #!/bin/sh APP_NAME=product-service #jar包路径 JAR_PATH='/usr/local/app/jars' #jar名称 JAR_NAME=product-service-1.0.0.jar #日志路径 LOG_PATH='/usr/local/app/logs' #PID 代表是PID文件 PID=$JAR_NAME\.pid #使用说明,用来提示输入参数 usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq "0" ]; then echo ">>> $APP_NAME is already running PID=${pid} <<<" else nohup java -Xms256m -Xmx512m -jar $JAR_PATH

php set_time_limit()用法测试详解

自闭症网瘾萝莉.ら 提交于 2019-11-27 20:50:54
一个php脚本通过crontab每5分钟执行一次,考虑到脚本执行时间会超过5分钟,特意用set_time_limit(290)来控制脚本在290秒退出。某天突然发现后台有多个该脚本的进程在执行,也就是说set_time_limit(290)没有起作用。为了证明,特意使用如下代码测试。 代码如下 1 set_time_limit(5); 2 for ($i = 0; $i < 100; $i++) { echo date('Y-m-d H:i:s') . "n"; sleep(1); } 无论是在web还是CLI下,上述脚本并没有在5秒钟后退出。后来加上ini_set(‘max_execution_time’, 5)测试,结果一样。那是不是说明set_time_limit函数根本就没有用呢?其实不然,在 http://stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli 这里找到根源所在,其实是上面的写法有问题,例如使用下述代码: 代码如下 1 set_time_limit(5); 2 for (;;) { } 执行后,大概5秒钟就可以看到”Fatal error: Maximum execution time of 5 seconds exceeded in”类似这样的错误提示。说明set

Renci.SshNet在Linux运维的应用

不羁岁月 提交于 2019-11-27 17:54:09
SSH.NET是一个.net的SSH应用库,支持并发。该库最新的代码可以从github上下载下来,比Sharp.SSH更新的频繁。它可以模拟ssh登陆,类似xshell、putty等工具。不过有更多的控制性和可开发性。 我们开发这边有在Windows平台上远程登陆Linux并执行系列操作的需求,如: 1. 登陆N个Linux主机 2. 上传M个脚本文件 3. 执行该M个脚本,并收集该M个脚本的执行结果 这样的功能使用SSH.NET这个运行库是很适合的,因为编译出的dll大小仅为几百KB。 来源: http://www.cnblogs.com/kelvinchiang/p/6220804.html

笔试题目-8

元气小坏坏 提交于 2019-11-27 16:56:35
2019/7/31 Linux运维必会的实战编程笔试题(19题) – 运维派 www.yunweipai.com/archives/20407.html 1/3 以下Linux运维笔试面试编程题,汇总整理自老男孩、马哥等培训机构,由运维派根据实战需求,略 有调整: 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮 件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟: 阶段1:开发一个守护进程脚本每30秒实现检测一次。 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) 企业面试题2: 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文 件,名称例如为: [root@oldboy oldboy]# sh /server/scripts/oldboy.sh [root@oldboy oldboy]# ls coaolvajcq_oldboy.html qnvuxvicni_oldboy.html vioesjmcbu_oldboy.html gmkhrancxh_oldboy.html tmdjormaxr_oldboy.html wzewnojiwe

笔试题目-3

☆樱花仙子☆ 提交于 2019-11-27 16:36:10
2019/7/31 2017年企业运维岗经典面试题(28题) – 运维派 www.yunweipai.com/archives/18798.html 1/6 1、Linux如何挂载windows下的共享目录? mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456 linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号 2、如何查看http的并发请求数与其TCP连接状态? netstat -n | awk ‘/^tcp/ {++b[$NF]}’ END {for(a in b) print a,b[a]}’ 还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024,不修改这里web服务器修改 再大也没用。若要用就修改很几个办法,这里说其中一个: 修改/etc/security/limits.conf * soft nofile 10240 * hard nofile 10240 重启后生效 3、如何用tcpdump嗅探80端口的访问看看谁最高? tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”

Linux下的crontab定时执行任务命令详解

做~自己de王妃 提交于 2019-11-27 16:10:20
来自: https://www.cnblogs.com/longjshz/p/5779215.html 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。 cron的配置文件称为“crontab”,是“cron table”的简写。 一、cron服务   cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。   service crond start //启动服务   service crond stop //关闭服务   service crond restart //重启服务   service crond reload //重新载入配置   service crond status //查看服务状态 二、cron在3个地方查找配置文件: 1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。 三、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。 SHELL=/bin/bash

执行脚本出现bin/bash: bad interpreter: No such file o...

吃可爱长大的小学妹 提交于 2019-11-27 14:59:59
运行SHELL脚本时发生如下错误 -bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory VI打开文件,没发现任何问题, 把/bin/bash改成/bin/sh -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory 依然报错,脚本内容在VI下没有任何问题,仔细一看错误消息,^M..明显在第一行末尾被加入了个^M, 这种情况应该有两种原因 1.在WIN底下用文本编辑工具修改过参数变量,在保存的时候没注意编码格式造成的, 2.也有可能是在VIM里修改,第一行末尾按到ctrl_v 错误原因之一很有可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A. 可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的 (1). vi filename 然后用命令 :set ff? 可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看. 2.可以用执行dos2unix 命令转换编码 #dos2unix myshell.sh 3..也可以用sed

Linux 用户的 3 个命令行小技巧

╄→尐↘猪︶ㄣ 提交于 2019-11-27 13:56:54
Linux 用户的 3 个命令行小技巧 原文: http://www.tecmint.com/useful-linux-hacks-commands/ 作者: Avishek Kumar 译文: LCTT https://linux.cn/article-5635-1.html 译者: goreliu Linux世界充满了乐趣,我们越深入进去,就会发现越多有趣的事物。我们会努力给你提供一些小技巧,让你和其他人有所不同,下面就是我们准备的3个小技巧。 1. 如何在不使用Cron的情况调度Linux下的任务 在Linux下,调度一个任务/命令称之为Cron。当我们需要调度一个任务时,我们会使用Cron,但你知道我们在不使用Cron的情况也可以调度一个在将来时间运行的任务吗?你可以按照如下建议操作…… 每5秒钟运行一个命令(date)然后将结果写入到一个文件(data.txt)。为了实现这一点,我们可以直接在命令提示符运行如下单行脚本。 $ while true; do date >> date.txt ; sleep 5 ; done & 上述脚本的解释: while true :让脚本进入一个条件总为真的循环中,也就是制造一个死循环,将里边的命令一遍遍地重复运行。 do : do 是 while 语句中的关键字,它之后的命令会被执行,在它后边可以放置一个或一系列命令。 date >>