linux脚本

shell脚本8-7

萝らか妹 提交于 2019-11-26 09:18:23
重定向与管道符 一、重定向--tr 程序=指令(命令)+数据(由变量提供) 重定向分为三类:标准输入重定向、标准输出重定向、错误重定向 数据输入:键盘-----标准输入,但并不是唯一输入方式 标准输入:例 useradd cqy; | passwd --stdin “cqy”(给用户cqy添加密码) 例如:功能添加用户 useradd.sh user.txt文本文档1000个用户 数据输出:显示器----标准输出,但并不是唯一的输出方式 Ls /etc/ >a.txt fd文件标识符 0-9,常用的被定义的为0(标准输出),1(标准输入),2(错误输入输出(标准错误)) 虚拟文件系统VFS,用来做翻译,文件系统格式ext2、ext2、reiserfs、FAT、NTFS、iso9660等。 常见重定向符号 1、标准输出:>覆盖重定向【非常危险】(set -C(关闭覆盖重定向的功能,set +C加上覆盖重定向的功能;>|强制重定向))set用来查看环境标量 C >>追加重定向(不覆盖) 2、标准输入:< tr(替换文件内容) tr set1 [set2] <file.txt        << 将多行数据同时输入 Cat >> a.txt<<EOF >1 >2 >3 >EOF  3、错误输出:2> 2>> 不需要输出内容,只需要输出状态; Ls /etc/ > /dev/null 2>

linux 将自己的服务添加到系统service服务

ε祈祈猫儿з 提交于 2019-11-26 04:44:24
前言 我们在linux上要启动一个程序得时候, 往往都是要写一堆路径, 找到要启动得服务程序, 再用 ./*** 启动服务. 那么我们有没有快速启动方法吗, 答案是肯定得 service 介绍 官方介绍(英文): https://linux.die.net/man/8/service 简单说一下service运行过程. 以iptables为例: service iptables start 首先,sevice 会去/etc/init.d下寻找iptables脚本, start是iptables脚本里的一个参数(你可以去查看networking这个脚本支持的参数) 然后告诉系统运行iptables这个脚本,剩下的事情就交给iptables脚本去坐了,事实就是这么简单。 至此,你们应该知道如何添加一个service命令了吧 编写一个脚本,然后把它放在/etc/init.d这个目录下,再用service + 脚本名字 运行即可。如果是要开机自动启动那就得用chkconfig命令了 注意: A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。 B、在init.d里面得脚本是没有后缀名的 设置开机自动启动 chkconfig -- add test chkconfig test on /off // 重启后永久生效 上面的不生效:则使用下面得方法

Linux双网卡绑定脚本

我的未来我决定 提交于 2019-11-26 03:56:11
linux运维及配置工作中,常常会用到双网卡绑定,少数几台服务器的配置还好,如果是需要配置几十甚至上百台,难免会枯燥乏味,易于出错,我编写了这个双网卡绑定的辅助脚本,可傻瓜式地完成linux双网卡绑定工作,当然,该脚本主要还是用于小批量的系统配置,如需配置大量的服务器,可提取脚本中的bonding函数,稍作修改即可,你值得一试! 1.适用范围 该shell脚本可在以下linux系统创建多个绑定网卡,用于生产环境没问题的: Redhat 5.x CentOS 5.x Kylin 3.x KUX 2.x 2.脚本特点 ---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC :eth0 Second NIC :eth1 bond name :bond1 IP address :192.168.56.11 netmask :255.255.255.0 bonding_mode :mode=1 primary NIC :none ----------------------------

04-ARM裸机开发的命令行工具

烂漫一生 提交于 2019-11-26 03:24:36
一、交叉编译工具的使用  在进行嵌入式开发时,通常有宿主机与目标机的角色之分,宿主机是执行编译、链接嵌入式软件的计算机,而目标机是运行嵌入式软件的硬件平台。而这两者之间有时硬件/软件平台可能不同,在宿主机上直接使用编译器的程序在目标机上无法运行,因此就出现了交叉编译工具。在针对ARM架构上运行的Linux目标机来说,其专用的交叉编译工具为arm-linux-gcc、arm-linux-ld等。  一个 C/C++文件要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)和连接(linking)等 4 步才能变成可执行文件。其每一步的作用在下表中进行了说明: 步骤 说明 预处理 C/C++源文件中,以“ #”开头的命令被称为预处理命令,如包含命令“ #include”、宏定义命令“ #define”、条件编译命令“ #if”、“ #ifdef”等。预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“ .i”文件中等待进一步处理。 编译 编译就是把 C/C++代码(比如上述的“ .i”文件)“ 翻译” 成汇编代码。 汇编 汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在 Linux 系统上一般表现为 ELF 目标文件(OBJ 文件)。 链接

linux中 $符号连接数字的含义 linux 比较操作符

旧街凉风 提交于 2019-11-26 00:41:47
linux中$#,$0,$1,$2,$@,$*,$$,$?的含义 $# 是传给脚本的参数个数 $0 是脚本本身的文件名 $1 是脚本后接的第一个参数 $2 是脚本后接的第二个参数 $@ 是传给脚本的所有参数列表,"$1" "$2" "$3" … "$n" $* 是以一个单字符串显示传给脚本的所有参数,"$1 $2 $3 … $n" $$ 是脚本运行的当前进程ID号 $? 是最后运行命令的结束状态码,0表示没有错误,其他表示有错误 参考链接: linux中$#,$0,$1,$2,$@,$*,$$,$?的含义 https://my.oschina.net/u/3997182/blog/3071460 来源: 51CTO 作者: 马吉辉 链接: https://blog.51cto.com/12445535/2450474?source=dra

Python踩坑之旅其一杀不死的Shell子进程

亡梦爱人 提交于 2019-11-25 23:02:54
1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程, 包括但不限于如下类型的任务在执行: a. 多线程的网络通信包处理 和控制Master节点交互 有固定Listen端口 b. 定期作业任务, 通过subprocess.Pipe执行shell命令 c. etc 发现坑的过程很有意思: a.重启Agent发现Port被占用了 => 立刻 想到可能进程没被杀死, 是不是停止脚本出问题 => 排除发现不是, Agent进程确实死亡了 => 通过 netstat -tanop|grep port_number 发现端口确实有人占用 => 调试环境, 直接杀掉占用进程了之, 错失首次发现问题的机会 b.问题 在一段时间后 重现 , 重启后Port还是被占用 定位问题出现在一个叫做xxxxxx.sh的脚本, 该脚本占用了Agent使用的端口 => 奇了怪了, 一个xxx.sh脚本使用这个奇葩Port干啥(大于60000的Port, 有兴趣的砖友可以想下为什么Agent默认使用6W+的端口) => review 该脚本并没有进行端口监听的代码 一拍脑袋, c.进程共享了父进程资源 了 => 溯源该脚本,发现确实是Agent启动的任务中的脚本之一 => 问题基本定位, 该脚本属于Agent调用的脚本 => 该Agent继承了Agent原来的资源FD, 也就是这个port =>

shell脚本备份mysql数据库

点点圈 提交于 2019-11-25 21:35:30
https://github.com/aminglinux/shell20 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份,具体要求如下: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:database_name-2018-11-11.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如本机可以直接通过rsync命令同步,同步目标地址为rsync://10.10.20.100/mysqlbak/ 7)远程备份数据要求保留1个月 拿到需求后,我们不应该马上就动手,而是应该先分析需求点,准备好储备知识。如果你没有足够的储备知识,无论脚本语法掌握的多么熟练,这个脚本也是不能完成的。本脚本的核心知识点是如何备份所有的库。 知识点一:MySQL数据库备份 假设已知备份数据的用户为backup,密码为34KpmyzUq,要备份的5个数据库分别为db1-db5。 备份数据库的命令为: mysqldump -ubackup -p34KpmyzUq db1 > db1.sql 如果是远程的MySQL服务,还可以加上IP和Port,例如: mysqldump -ubackup -p34KpmyzUq -h192.168

linux下运行r脚本

杀马特。学长 韩版系。学妹 提交于 2019-11-25 21:01:51
Linux下运行R脚本 第一步 第二步 第三步 第一步 打开编辑器第一行输入 #! /usr/lib/R/bin/Rscript --vanilla #options:默认–restore – save --no-readline;–help 查看帮助信息;–version 查看R版本;–slave只打印R脚本的输出,而不显示脚本具体执行情况;–no-timing 去除输出文档结束的运行时间输出。 输入代码 第二步 终端赋予执行权限 $ chmod +x test.r 第三步 终端执行脚本 Rscript test.r 来源: https://blog.csdn.net/cmusunqi/article/details/98734942