linux脚本

人们为什么在Python脚本的第一行上编写#!/ usr / bin / env python shebang?

你。 提交于 2019-12-14 12:33:32
在我看来,如果没有该行,文件运行相同。 #1楼 您可以使用virtualenv尝试此问题 这是test.py #! /usr/bin/env python import sys print(sys.version) 创建虚拟环境 virtualenv test2.6 -p /usr/bin/python2.6 virtualenv test2.7 -p /usr/bin/python2.7 激活每个环境,然后检查差异 echo $PATH ./test.py #2楼 强调大多数人错过的一件事可能是有道理的,这可能会阻止立即理解。 在终端中键入 python ,通常不会提供完整路径。 而是在 PATH 环境变量中查找可执行文件。 反过来,当您想直接执行Python程序 /path/to/app.py ,必须告诉Shell使用什么解释器(通过 hashbang ,上面其他贡献者在解释什么)。 Hashbang希望有完整的口译员。 因此,要直接运行Python程序,您必须提供Python二进制文件的完整路径,该路径有很大差异,尤其是考虑到使用 virtualenv时 。 为了解决可移植性,使用了 /usr/bin/env 的技巧。 后者最初旨在就地更改环境并在其中运行命令。 如果未提供任何更改,它将在当前环境中运行该命令,从而有效地导致相同的 PATH 查找。 来自unix

两台服务器互相自动备份

安稳与你 提交于 2019-12-14 03:52:20
将数据同步到其它服务器这里使用Linux同步文件工具rsync来进行文件的同步 rsync rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步 用法 rsync src dest 这是最简单的用法,表示同步src,dest文件。(即,执行之后,dest的文件与src的相同,以src的为准) 常用选项 -a: 等价于-rlptgoD,归档式 -r: 递归 -l: 复制软件链接 -p: 保留权限信息 -t: 将src的修改时间,同步到dest -g: 同步组信息(group) -o: 同步拥有者信息(own) -D: 保持字符与块设备文件 -z: 启用压缩传输 –delete:如果src没有此文件,那么dest也不能有,即在dest删除src里没有的文件。(如果你使用这个选项,就必须搭配-r选项一起) 例如: 将本地/bak/mysqlbak/文件同步到 远程服务器 /bak/mysql/bak 目录下面 排除 mysqlbak/index目录 通过ssh端口 rsync -vzacu /bak/mysqlbak/ root@192.168.53.86:/bak/mysqlbak --exclude “mysqlbak/index” -e “ssh -p

Shell的脚本学习

牧云@^-^@ 提交于 2019-12-14 03:32:39
第1章 Shell概述 1)需要看懂运维人员编写的Shell程序。 2)偶尔会编写一些简单Shell程序来管理集群、提高开发效率。 第2章 Shell解析器 (1)Linux提供的Shell解析器有: [atguigu@hadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh (2)bash和sh的关系 [atguigu@hadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash (3)Centos默认的解析器是bash [atguigu@hadoop102 bin]$ echo $SHELL /bin/bash 第3章 Shell脚本入门 1.脚本格式 脚本以 #!/bin/bash 开头(指定解析器) 2.第一个Shell脚本:helloworld (1)需求:创建一个Shell脚本,输出helloworld (2)案例实操: [atguigu@hadoop101 datas]$ touch helloworld.sh [atguigu@hadoop101 datas

(转自张戈博客)Linux系统防CC攻击自动拉黑IP增强版Shell脚本

别说谁变了你拦得住时间么 提交于 2019-12-13 21:29:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> (转自张戈博客) 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护。 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护。于是稍微改进了下代码,现在简单的分享下! 一、Shell代码 #!/bin/bash #Author:ZhangGe #Desc:Auto Deny Black_IP Script. #Date:2014-11-05 #取得参数$1为并发阈值,若留空则默认允许单IP最大50并发(实际测试发现,2M带宽,十来个并发服务器就已经无法访问了!) if [[ -z $1 ]];then num=50 else num=$1 fi #巧妙的进入到脚本工作目录 cd $(cd $(dirname $BASH_SOURCE) && pwd) #请求检查、判断及拉黑主功能函数 function check(){ iplist=`netstat -an |grep ^tcp.*:80

java应用linux启动脚本

白昼怎懂夜的黑 提交于 2019-12-13 20:38:29
java应用linux启动脚本 启动脚本:testRun.sh #!/usr/bin/env bash LANG=zh_CN.utf8 #脚本所在目录 shellPath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" JAVA_HOME=/app/jtech/jdk1.8.0_73 APP_DIR=$(pwd) LIB_HOME=$APP_DIR/WEB-INF/lib export JAVA_HOME LANG LIB_HOME cps="$APP_DIR/WEB-INF/classes/" for jarPkg in `find $APP_DIR/WEB-INF/lib -name "*.jar"` do cps=$cps:$jarPkg done $JAVA_HOME/bin/java -Xms258M -Xmx2048M -XX:MetaspaceSize=256M -XX:MaxNewSize=512m -XX:MaxMetaspaceSize=512m -classpath $cps test1.TestMain 来源: 51CTO 作者: 兜里有佩 链接: https://blog.51cto.com/jtech/2410129

shell脚本免交互——ecpect

柔情痞子 提交于 2019-12-13 16:02:17
Expect概述 Expect是建立在tcl基础上的一个工具,Expect是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。对于大规模的Linux运维很有帮助。 在Linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能需要输入yes/no、password等信息。为了模拟这种输入,可以使用Expect脚本。 Expect安装 yum install expect -y 安装expect服务 Expect基本命令 1.send:向进程发送字符串,用于模拟用户的输入 该命令不能自动回车换行,一般要加\r (回车) 2.expect expect的一个内部命令,判断上次输出的结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。 只能捕捉spawn启动的进程的输出。 3.spawn:启动进程,并跟踪后续交互信息。 4.interact:执行完成后保持交互状态,把控制权交给控制台 5.Timeout:指定超时时间,过去则继续执行后续指令 单位是:秒 timeout -1 为永不超时 默认情况下,timeout是10秒 6.exp_continue 允许expect继续向下执行 7.send_user 回显命令,相当于echo 8.$argv 参数数组 expect脚本可以接受从bash传递的参数,可以使用

shell脚本头部,#!/bin/...

佐手、 提交于 2019-12-13 05:22:11
1. 简介 常见的脚本头部都有如下声明: #!/bin/sh #!/bin/bash #!usr/bin/env python3 #!/bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。 cat /etc/shells 可以查看系统支持的shell格式. 2. 区别 GNU/Linux操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从NetBSD移植到Linux并更名为 dash (Debian Almquist Shell) ,并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多,符合POSIX标准。 标记为 #!/bin/sh 的脚本不应使用任何 POSIX 没有规定的特性 (如 let 等命令, 但 #!/bin/bash 可以)。Debian曾经采用 /bin/bash 更改 /bin/dash ,目的使用更少的磁盘空间、提供较少的功能、获取更快的速度。但是后来经过shell脚本测试存在运行问题。因为原先在 bash shell 下可以运行的shell script (shell 脚本),在 /bin/sh 下还是会出现一些意想不到的问题,不是100

系统管理之资源与定时任务

别等时光非礼了梦想. 提交于 2019-12-12 23:18:59
一、系统资源查看相关命令 1、vmstat 命令监控系统资源 [root@centos ~]# vmstat 1 3 #每一秒刷新一次,共刷新三次 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 329960 21424 49564 0 0 324 34 84 140 1 2 91 6 0 0 0 0 329928 21424 49560 0 0 0 0 26 29 0 0 100 0 0 0 0 0 329928 21424 49560 0 0 0 0 27 32 0 0 100 0 0 procs:进程信息字段: r:等待运行的进程数,数量越大,系统越繁忙。 b:不可被唤醒的进程数量,数量越大,系统月繁忙 memory:内存信息字段: swpd:虚拟内存的使用情况,单位 KB。 free:空闲的内存容量,单位 KB。 buff:缓冲的内存容量,单位 KB。 cache:缓存的内存容量,单位 KB。 swap:交换分区的信息字段: si:从磁盘中交换到内存中数据的数量,单位 KB。 so:从内存中交换到磁盘中数据的数量,单位 KB

70个shell脚本技巧

别来无恙 提交于 2019-12-11 12:04:23
1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 (LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。) 2) 如何在脚本中使用参数 ? 第一个参数 : $1,第二个参数 : $2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail-1 7) 如何获取文件的第一行 ? head-1 8) 如何获取一个文件每一行的第三个元素 ? awk'{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk'{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11) 举例如何写一个函数 ? function example { echo "Hello world!" } 12)

面向 Java 开发与测试人员的远程执行 Linux/UNIX 系统上任务的框架 -- sshxcu

我与影子孤独终老i 提交于 2019-12-10 16:48:57
软件开发与测试人员常常会在远程 Linux/UNIX 系统上执行命令或脚本,有时还会有批量执行任务的需求。常见的办法是通过本地工具(例如 Putty)连接远程计算机,输入命令执行,但是当遇到需要集成这些任务到代码或者开发、测试框架中时,往往就没有很好的解决方案了。sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用 Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能。sshxcute 不管是针对软件开发、测试还是系统部署,都简化了自动化流程与系统环境部署的步骤。 通常的使用场景 随着现代企业内信息的迅速增长,更多的企业建立了数据中心甚至云计算网络,对于软件开发测试行业人员来说,需要更多的依赖于远程主机,从部署环境到远程执行都需要利用客户端工具连接。对于开发人员,当部署环境需要输入很多命令时,每次等待命令执行完毕才能输入下一个命令,另一种常用的解决方法是把所有命令写在一个脚本里,但这也需要通过客户端工具(例如 Putty)远程登录后才能执行,但开发人员的利器毕竟是集成开发环境(IDE),这些环境部署工作既费时又费力。对于测试人员,当本地已经做好了一个自动化测试框架或者程序时,需要先在被测系统上部署环境,如何集成进已有的程序或者框架是件必须考虑的事情