linux脚本

SHELL脚本--read命令

空扰寡人 提交于 2019-12-07 23:36:33
shell read简介                           要与 Linux交互,脚本获取键盘输入的结果是必不可少的, read可以读取键盘输入的字符。 shell作为一门语言,自然也具有读数据的功能, read就是按行从文件(或标准输入或给定文件描述符)中读取数据的最佳选择。 当使用管道、重定向方式组合命令时感觉达不到自己的需求时,不妨考虑下while read line。 read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [var_name1 var_name2 ...] read命令用于从标准输入中读取输入单行,并将读取的单行根据 IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表 var_name。第一个字段分配给第一个变量 var_name1,第二个字段分配给第二个变量 var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个 var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。 如果没有指定任何 var_name,则分割后的所有字段都存储在特定变量 REPLY中。 选项说明: -a:将分裂后的字段依次存储到指定的数组中

Java程序运行、停止Shell脚本

梦想的初衷 提交于 2019-12-07 17:11:33
碰到这样一个问题——用Java程序来控制shell脚本的运行和停止。具体来讲,这个Java程序至少要有三个功能: 运行Shell脚本; 等待Shell脚本执行结束; 停止运行中的Shell程序; 从功能需求来看,似乎是比较容易做到的。尽管没有写过类似功能的程序,Google一下,很快就有答案了。 用Runtime或者ProcessBuilder可以运行程序,而Process类的waitFor()和destroy()方法分别满足功能2和3。 import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; public class ShellRunner extends Thread { private Process proc; private String dir; private String shell; public ShellRunner(String dir, String shell) { super(); this.proc = null; this.dir = dir; this.shell = shell; } @Override public void run() { try {

大神教你如何在 Linux 中启用 Shell 脚本的调试模式

人盡茶涼 提交于 2019-12-07 14:13:14
导读 脚本是存储在一个文件的一系列命令。在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。 在学习脚本或写脚本的初期阶段,我们通常从写小脚本或者几行命令的短脚本开始,调试这样的脚本时我们通常无非就是通过观察它们的输出来确保其正常工作。 然而,当我们开始写非常长或上千行命令的高级脚本,例如改变系统设置的脚本,在网络上执行关键备份 等等,我们会意识到仅仅看脚本输出是不足以在脚本中找到 Bug 的! 因此,在 Linux 系列中这篇介绍 Shell 脚本调试, 我们将看看如何启用 Shell 脚本调试,然后在之后的系列中解释不同的 Shell 脚本调试模式以及如何使用它们。 如何开始写一个脚本 一个脚本与其它文件的区别是它的首行,它包含 #!(She-Bang - 释伴:定义文件类型)和路径名(解释器路径),通知系统该文件是一个命令集合,将被指定程序(解释器)解释。 下面是不同类型脚本首行示例: #!/bin/sh [sh 脚本] #!/bin/bash [bash 脚本] #!/usr/bin/perl [perl 程序] #!/bin/awk -f [awk 脚本] 注意:如果脚本仅包含一组标准系统命令,没有任何内部 Shell 指令,首行或#!可以去掉。 如何在 Linux 操作系统执行 Shell

shell脚本

你说的曾经没有我的故事 提交于 2019-12-07 09:33:33
第 1 章 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下shell执行mysql命令

六月ゝ 毕业季﹏ 提交于 2019-12-07 02:51:31
在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。 方案1 mysql -uuser -ppasswd -e"insert LogTable values(...)" 优点:语句简单 缺点:支持的sql相对简单 方案2 准备一个sql脚本,名字为update.sql,例如: CREATE TABLE `user` ( `id` varchar(36) NOT NULL COMMENT '主键', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(50) NOT NULL COMMENT '用户密码', `createdate` date NOT NULL COMMENT '创建时间', `age` int(11) NOT NULL COMMENT '年龄', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表'; DROP TABLE IF EXISTS `visit_log`; CREATE TABLE

当Shell遇上了NodeJS

青春壹個敷衍的年華 提交于 2019-12-07 01:37:46
序言 无论在传统的企业级系统维护还是在互联网运维中,Shell脚本的编写与维护常常必不可少,在系统管理员或开发人员工作中占比重比较大的一部分。 Shell脚本的严格语法格式对于一般的运维人员来说,常常会在一不留神下而抓狂或查找半天才发现是因为多了或少了一个空格或某语包括号不匹配而导致的错 误,不但大大的浪费了脚本维护人员的工作时间,还可能影响到工程进度甚至项目的发布里程碑等。当然,对于非纯Geek来说,最重要的还是影响心情,特别是 对于一些较复杂的脚本需求,更是必须小心谨慎,因此越来越多的开发人员必须借助于Python、Perl、Ruby等相关的脚本语言来实现,但是常由于平 台的特性或者语言的限制,对系统级的命令调用或者异常处理有限制,最终解决起来并不是十分优雅。 NodeJS的出现或许会给这些开发人员带来一些新的选择。 NodeJS 从诞生起发展非常迅速,社区活动非常活跃,目前扩展模块达到1500多个,并且每天都有不同的模块提交。它是构建在JavaScript引擎 V8 之上的JavaScript环境,它采用基于单线程的异步事件驱动I/O模型,具有非常高的 性能 , 同时能够支持多种平台。日前国外的很多大的软件或互联网公司如Microsoft,ebay,yahoo等都在使用NodeJS,国内的网易,淘宝,新浪 等互联网企业也有很多分享和成功的线上案例应用。言归正传

我常用的主机监控Shell脚本

那年仲夏 提交于 2019-12-07 00:46:11
最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 #!/bin/bash #!/bin/bash #network #Mike.Xu while : ; do time='date +%m"-"%d" "%k":"%M' day='date +%m"-"%d' rx_before='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-' tx_before='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-' sleep 2 rx_after='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-' tx_after='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-' rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx

SHELL脚本--管道和重定向基础

末鹿安然 提交于 2019-12-06 22:07:30
匿名管道"|"                   管道符号意如其名,类似管道一样将管道入口的数据通过管道传递给管道出口。 管道是为了解决进程间通信问题而存在,它可以让两个进程之间的数据进行传递,将一个进程的输出数据传递给另一个进程作为其输入数据。管道左边是数据给予方,管道右边是数据接收方。 例如echo "abcd" | passwd --stdin username,表示将进程echo的输出结果"abcd"作为进程passwd的输入数据。 基本的管道符号及其用法很容易理解。现在的疑问是,对于ps aux | grep "ssh" ,为什么在结果里会有grep进程出现? [root@localhost ~]# ps aux |grep ssh root 1528 0.0 0.2 66236 1244 ? Ss 03:47 0:00 /usr/sbin/sshd root 1841 0.0 0.9 104616 4552 ? Ss 03:53 0:00 sshd: root@pts/0 root 2532 0.0 0.7 59836 3688 pts/0 S+ 04:46 0:00 ssh localhost root 2533 0.0 0.9 102540 4512 ? Ss 04:46 0:00 sshd: root@pts/1 root 2825 0.0 0.1 103332

Shell编程规范与变量

僤鯓⒐⒋嵵緔 提交于 2019-12-06 21:24:54
shell编程规范与变量 一、shell脚本的应用场景 ​ Shell脚本就是将要执行的命令按照顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事务处理、自动化运维、服务运行状态监控、定时任务执行等。 二、shell编程规范 1、shell的作用 命令解释器 : 介于系统内核与用户之间,负责解释命令行 2、用户的登录shell 登录后默认使用的shell程序,一般为/bin/bash 不同shell的内部指令,运行环境等会有所区别 通过/etc/shells文件可以了解当前系统所支持的shell脚本种类 3、编写第一个shell脚本 使用vim文本编辑器 每行一条Linux命令,按执行顺序依次编写 脚本后缀为.sh 例如,将以下三条命令按顺序用shell脚本编写 cd /boot/ pwd ls -lh vml* [root@localhost ~]# vim 1.sh #!/bin/bash cd /boot/ pwd ls -lh vml* 写好之后按 :wq 保存退出,再执行脚本。在执行脚本之前,需要赋予可执行权限 [ ] 赋予可执行权限,使脚本具有可执行属性 chmod +x 1.sh 4、执行脚本文件(三种方法) 方法一: sh脚本文件路径 ​

linux shell脚本相关知识

你离开我真会死。 提交于 2019-12-06 17:17:51
最近的项目中,有一个编写linux shell脚本的任务。由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多。下面宵云网络就分享一下linux shell脚本中常用的知识总结。 1基础语法 1.1变量 使用一个定义过的变量,只要在变量名前面加美元符号即可 your_name="qinjx" echo $your_name echo ${your_name} 1.2字符串 字符串可以用单引号,也可以用双引号,也可以不用引号。 单引号 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 双引号里可以有变量 双引号里可以出现转义字符 1.3传递参数 $# 表示执行脚本传入参数的个数 $* 表示以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $$ 表示脚本运行的当前进程ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $0 表示执行脚本名称 $1 表示第一个参数 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 1.4基本运算符 原生bash不支持简单的数学运算