shell 脚本

shell: shell读取文本

都是使用shell自建的命令进行读取,可实际的结果会有很大的差异。 我们先建立一个测试文件a.txt a b c d #e f g 然后进行字符串自增的方式进行测试。第一个使用重定向

shell: Linux 环境变量配置

Linux 环境,用户通过shell 操作时,系统会为用户初使化环境变量, 比如系统公共资源路径: path , include , bin 等目录。 shell 模式下,执行 export , 查看用户环境变量 , echo $key 查询某个环境变量。 设置环境变量,有两种方式,分为临时设置,与永久设置。 a.临时设置(实时生效) shell 模式执行: export PATH=”$PATH:/opt/au1200_rm/build_tools/bin>” b.永久设置 #行尾追加 export… vi /etc/profile export PATH=”$PATH:/opt/au1200_rm/build_tools/bin>” vi /root/.bashrcexport PATH=”$PATH:/opt/au1200_rm/build_tools/bin>”… read more »

shell: bash中的冒号

前段时间有人在群上发了一个shell命令,问谁敢运行,还说最好在虚拟里运行.于是我研究了一下. 前言 先来shell命令吧. :(){ :|:& };: 2015.4.21 更新 感谢 nnkken 言简意明的告诉我真正的原因在于无限递归fork子进程。 而这几天我刚好在看 《UNIX环境高级编程》的第九章, 正好第9小节讲的有shell执行程序的原理,于是可以有理有据的更新一下了。 当然,可能写的还有很多不足或错误之处,可以留言告诉我,然后我完善一下。 shell中的冒号 看到这个shell代码,我第一个想法是难道是冒号的特殊用法? 于是查询了一下冒号的用法. 变量默认值 当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT。 ${VAR:=DEFAULT} 例如下面的测试代码 tiankonguse@tiankonguse:~$ base=”hello>”   tiankonguse@tiankonguse:~$ echo ${first:=”word>”} word tiankonguse@tiankonguse:~$ echo $first word   tiankonguse@tiankonguse:~$… read more »

shell: 如何设置 Linux 上 SSH 登录的 Email 提醒

你也可以选择性地让警告只对 root 用户生效: [ root@vps ~]# vi . bashrc 将下面的内容添加到/root/.bashrc的尾部: echo ‘ALERT – Root Shell Access (vps.ehowstuff.com) on:’ `date` `who` | mail – s “Alert: Root Access from `who | cut -d'(‘ -f2 | cut… read more »

shell: 增强你的bash,提高命令效率之终极利器oh-my-zsh

当我知道了zsh,并体验了5分钟的时候,我决定将 zsh作为我的默认 shell 终端。从这里你可能也就知道了 zsh是 shell 的一种,当然还包括目前估计是你默认的 bash,输入下面的命令,就能看到你的系统中提供了多少的 shell : cat /etc/shells 前人已经有好多使用 zsh的,所以这类的文章也很多,包括怎么安装、使用技巧等等,请看: 池建强-终极 Shell 使用 zsh 的九个理由 我所使用的几个 plugin 如下 : autojump git colored-man colorize copydir command-not-found history sublime brew 挑选你自己的 plugin…… 使用方法很简单,在… read more »

shell: 阿里Linux Shell脚本面试25个经典问答

Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: Q:3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“ echo $ ”查看。 Q:4 如何将标准输出和错误输出同时重定向到同一位置? 答:这里有两个方法来实现: 方法一: 2>&1(# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &>(# ls /usr/share/doc &> out.txt ) Q:5… read more »

shell: shell处理mysql增、删、改、查

引言 这几天做一个任务,比对两个数据表中的数据,昨天用PHP写了一个版本,但考虑到有的机器没有php或者php没有编译mysql扩展,就无法使用mysql系列的函数,脚本就无效了,今天写个shell版本的,这样,在所有linux系列机器上就都可以运行了。 shell是如何操作mysql的? shell操作mysql其实就是通过mysql命令通过参数去执行语句,跟其他程序里面是一样的,看看下面这个参数: 因此我们可以通过mysql -e来执行语句,就像下面这样: 执行之后返回下面结果: 在shell脚本中操作mysql 导出数据 插入数据 输出结果 更新数据 输出结果: 本文版权归作者iforever[ ]所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接。 原文:http://www.cnblogs.com/iforever/p/4459857.html

shell: Shell 脚本基础知识

Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作为一种Shell。我们常说有多少中Shell,其实说的是Shell脚本解释器。 几种常见的Shell 第一个Shll脚本 在脚本中输入以下代码: 运行Shell的方法: 示例:编写一个脚本,从标准输入(stdin)中读取名字,显示在标准输出(stdout)上。 Shell 变量 定义变量 变量名与等号直接不能有空格。变量明的命名规则需遵循如下规则: 1、首个字符必须为字母(a-z,A-Z) 2、中间不能有空格,可以使用下划线(_) 3、不能使用标点符号 4、不能使用shell里的关键字(在命令行中使用help命令可以查看保留关键字) 变量定义示例: 使用变量使用一个定义过的变量,只要在变量名前面加 $ 符号就可以了。如: 有些时候需要在变量名外面加上花括号帮助解释器识别变量的边界,如下面这种情况 重新定义变量已经定义的变量,可以被重新定义,如: 只读变量使用readonly命令可以将变量定义为只读变量,只读变量的值不能改变 运行脚本会报错,结果如下 删除变量 使用 unset命令删除变量,变量被删除后不能再次使用; unset命令不能删除只读变量 示例: 运行结果不会有任何输出。 Shell编程浅析 http://www.linuxidc.com/Linux/2014-08/105379.htm Linux Shell参数替换 http://www.linuxidc.com/Linux/2013-06/85356.htm Shell for参数… read more »

shell: 总是出问题的Crontab

最近用Python写了一些数据统计的脚本,并使用crontab自动执行,但是配置crontab总是要过几个坑才行的,这里总结一下这次遇到的坑。 输出 要将crontab命令的输出记录到日志文件中,可以使用重定向,不仅要重定向 stdout也要重定向 stderr,因为Python解释器会将异常输出到 stderr。示例: $HOME/path/to/script > $HOME/log/file 2>&1 环境变量 crontab会以用户的身份执行配置的命令,但是不会加载用户的环境变量,crontab会设置几个默认的环境变量,例如SHELL、PATH和HOME等,一定要注意PATH可不是用户自定义的PATH。 我们往往会在 .bash_profile文件中定义一些全局的环境变量,但是crontab执行时并不会加载这个文件,所以你在shell中正常执行的程序,放到crontab里就不行了,很可能就是因为找不到环境变量了。要解决这个问题只能是自己加载环境变量了,可以在shell脚本中添加 source $HOME/.bash_profile,或者直接添加到crontab中。 路径 我们在写脚本时往往会使用相对路径,但是在crontab执行脚本时,由于工作目录不同,就会出现找不到文件或者目录不存在的问题。 解决方法是脚本中使用绝对路径或者在执行程序前切换工作目录,例如直接在crontab命令中切换工作目录: 编码 我写的Python程序中输出了一些中文(编码是utf-8),在shell中直接执行没有问题,但是crontab执行时出现了UnicodeEncodeError的错误,Google了一下发现这个问题不仅仅是在crontab中会出现,在使用管道或者重定向的时候都会出现这个问题,原因是编码不同。 在终端中直接执行Python程序时,Python会将输出内容自动编码为终端所使用的编码,我使用的终端编码是utf-8,所以不会出错,输出的内容也是正常的。但是在使用管道或者重定向时,编码格式为ascii,Python会用ascii编码格式去encode输出的字符串,但是字符串的编码使用的时utf-8,所以会出现UnicodeEncodeError的错误。 解决方法: 方法一:在程序中输出的字符串都加上 encode(‘utf-8’); 方法二:在crontab中加上 PYTHONIOENCODING=utf-8,将Python的 stdout/stderr/stdin编码设置为utf-8。 原文:http://segmentfault.com/a/1190000002724336

shell: 使用C#给Linux写Shell脚本(下篇)

在上篇的《 使用C#给Linux写Shell脚本》结尾中,我们留下了一个关于C#如何调用BashShell的问题。在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerShell的东西),在我下载并安装了该项目之后,尝试之下发现这仍然不是我们想要的。似乎C#还真的没有提供这种(输出重定向)功能,这也迫使我们采取了其他方式来实现。在本篇中,我们将提升“恫吓”等级并顺带把这个难题一并解决,各位看官请系好安全带。 本篇中,我们将介绍: (1)、C#直接调用BashShell所遭遇的问题 (2)、使用C的popen方式调用BashShell (3)、通过调用C来间接的调用BashShell 一、C#直接调用BashShell所产生的问题 使用C#调其他应用,毫无疑问最直接的方法就是“System.Diagnostics”中的Process.Start了。但当我们使用Process.Start时,却发现连最简单的命令都无法调用,更无从谈起调用并接受返回了。 上图为其中一种错误(当然还会有更多的问题出现,这里就不列举了)。 二、使用C的popen方式调用 正由于Process.Start无法直接调用BashShell的命令,我们需要绕道而行。 我们先看下C语言,C语言调用Shell的方式有多种,我们选择了popen函数的方式进行调用,先看一下以下的这个demo: 通过poepn管道并完成输出重定向。 三、通过调用C来间接调用Shell 既然C已经可以实现对BashShell的调用已经管道重定向,那我们则可以再通过C#调用C的方式,进而间接的完成对BashShell的调用。 我们先对自己的C函数进行改造,改造后的代码如下(对具体操作有疑问的读者可参见《 如何让C为C#提供函数》): 同样的我们也把C# Shell进行改造(没有Intellisense果然难写,我先在控制台写好再拷贝过来) 完成之后,我们再次在Shell中调用。 成功执行BashShell命令并把返回输出重定向到C#中。 可能有读者会有这么一个疑问:“这跟直接写BashShell没啥差别啊?!”此言差矣,C#有C#的优势,Bash有Bash的优势,将两者结合起来后,可以形成互补,利用Bash可以快速的操作Linux,而一些Bash无法提供的功能,譬如写入数据库、调用某些服务的API、做其他BashShell无法做的事情等。 好的,本篇就写这么多了,非C内行,文中可能有不科学之处,仅提供思路,勿拍砖哈。谢谢。 原文地址:http://jhonge.net/Home/Single2/1938 原文:http://www.cnblogs.com/xiaodiejinghong/p/4475066.html

shell: /etc/resolv.conf 档案自动复原问题

相关 [etc resolv.conf 档案] 推荐: /etc/resolv.conf 档案自动复原问题 – – Linux – 操作系统 – ITeye博客 主机使用 DHCP 取得 IP ,当我改过 /etc/resolv.conf 之后,隔不多久这个档案又会恢复成原本的样子,这是什么原因. 因为使用 DHCP 时,系统会主动的使用 DHCP 服务器传来的数据进行系统配置文件的修订. 因此,你必须告知系统,不要使用 DHCP 传来的服务器设定值. 此时,你得要在 /etc/sysconfig/network-scripts/ifcfg-eth0 等相关档案内,增加一行:『PEERDNS=no』,然后重新启动网络即可. 已有 0 人发表留言,猛击->>… read more »

shell: DBA需要掌握的shell知识

每个中高级DBA都需要掌握一些简单脚本的编写,这样才能从繁杂重复的基础维护工作中解脱出来,才能有时间去研究更有价值的技术。VBird在讲shell script的时候,给出了几个经典的小范例练习,对于初学shell的人来说是很好的入门,现就根据VBird给出的几个典型练习进行近一步的系统整理,总结出bash shell的系统知识,希望能给各位读者起到抛砖引玉的作用。 1.顺序执行 2.分支判断 3.循环结构 4.巩固练习 reference 1.顺序执行 练习1:用户选择输入Y/N,不区分大小写,根据用户输入屏幕打印不同内容。 考查:read,[],exit 0,&&,echo 2.分支判断 两种常用的分支判断:if…else…fi分支判断,case…esac分支判断。 练习2:将练习1中的代码改写为if分支判断,使程序的执行逻辑更直观。 考查:==,|| if[]; then … elif[]; then … else … fi 练习3:用分支判断来辨别参数1的输入是否合法。 考查:$0,$1 练习4:用case判断改写练习3. 考查:case…esac判断 3.循环结构 while do done, until do… read more »

shell: Shell: how to list all db links in oracle DB to generate a flat file (生成dblink列表文件)

如果数据库里有上百个DATABASE LINK, 而且同时要管理几十套这样的数据库,在日后改数据库用户密码时就要格外注意是否有DB LINK在使用,否则只改了LOCAL DB 的用户密码,没有级连修改REMOTE DB 的Database Link 密码,造成访问DB LINK时出错,现在去统计所有DB Link 是件很费时间的事。 自己整理了个简单的SHELL 去收集LOCAL 的所有DB LINKS,功能是如果DB LINK创建使用的是简单方式(没有配置TNSNAMES.ORA)直接取IP:PORT, 或如果使用TNSNAME Alias Name调用TNSPING 转换成IP, 同时还会判断tnsping ip port 里否通? — I hope it’s useful 原文:http://www.anbob.com/archives/2565.html

shell: 高效Linux bash快捷键及alias总结

bash快捷键 习惯使用编辑的快捷键可以大大提高效率,记忆学习过程要有意识的忽略功能键、方向键和数字小键盘。以下快捷键适用在bash处于默认的Emacs模式下。如果你有 set -o vi,就处于 vi 模式就不适用了。 另外下面的内容并不包含所有快捷键,只是我个人适用频率最高的几种,但相信已经可以大大提高工作效率了: Ctrl + l:清除屏幕,同clear Ctrl + a:将光标定位到命令的开头 Ctrl + e:与上一个快捷键相反,将光标定位到命令的结尾 Ctrl + u:剪切光标之前的内容,在输错命令或密码 Ctrl + k:与上一个快捷键相反,剪切光标之后的内容 Ctrl + y:粘贴以上两个快捷键所剪切的内容。Alt+y粘贴更早的内容 Ctrl + w:删除光标左边的参数(选项)或内容(实际是以空格为单位向前剪切一个word) Ctrl + /:撤销,同Ctrl+x u Ctrl +… read more »

shell: 任督二脉之Shell中的正则表达式

VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进。 Shell的基础学习之前已经总结了一篇博客: http://www.cnblogs.com/jyzhao/p/4485553.html 本文将总结Shell中的正则表达式及常用的字符处理命令,为打通任督二脉奠定基础^_^。 基础正则表达式举例说明 字符截取命令 cut命令 awk命令 sed命令 字符处理命令 sort命令 wc命令 1. 基础正则表达式举例说明 *, ., , ^word, word$, [list], [^list], [n1-n2], {n}, {n,m} 例1:简易判断日期格式 比如:2015-05-11,只是简单判断数字的格式。 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ 例2:简易判断IP地址格式 比如:192.168.1.100,只是简单判断数字的格式。 [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} 例3:找出1.txt文本文件中以字母开头的以及不是以字母开头的行。 以字母开头的行: grep –color=auto “^[a-z,A-Z]>”… read more »

shell: 使用 shell 脚本将博客同时提交至 github 和 gitcafe

由于 github 的访问速度比较慢,所以也选择了跟很多同学一样,选择了同时将 blog 部署至 github 和 gitcafe。 因此在写完博客之后需要执行 hexo d命令,将博客分别提交至 github 和 gitcafe,怎么去方便快速的提交?后面给出一个解决方法,另外也会给出一个快速创建 blog 并打开该 md 文件的方法! 这里的前提是已经搭建好自己的博客,并会使用命令进行博客的创建、提交等等。。 下面进入正题 同时提交至 github 与 gitcafe 这里假设你的博客根目录为 hexo,先确保该目录下的 _config.yml 文件的最后一行的内容为 type: git 这里贴出最后几行的内容: 这里我没将 github 或者 gitcafe… read more »

shell: Shell 编程初探

从开始系统的学习编程到现在已经快有两年了, 我也逐渐从使用 GUI 完成大部分任务转换到使用命令行. 书籍选择 学习一种技术对于我来说还是一件很有意思的事情, 而选择书籍就成为学习技术前所必须的准备工作. 而对于 shell 编程, 书籍的选择其实并不多. Advanced Bash Scripting 而使用命令行之后, shell 是绕不过的语言, 我在一个月之前看过几章的 Advanced Bash Scripting, 不过这本书在我看来并不像很多人说的那样是 shell 编程中的圣经, 尤其不适合 shell 初学者. 书中对于 shell 中介绍可以说是非常的详细甚至啰嗦了. Linux Command Line and Shell… read more »

shell: Bash 的常用语法,控制结构

最近玩弄 Jenkins 较多,构建服务器基本是 Mac OS 和 Linux,虽说有许多现成插件可用,但不敢不说 Execute Shell这个东西都是即开即用,方便而灵活的。因此不断的要和 Shell 打交道,真正通用的的 Shell 自然是 Bash,在 Mac OS 下可发现自带了 zsh, ksh 和 tcsh,考虑到 Linux 还是 Bash 吧。 本人工作时用的是 Fish Shell,目前相当的脚本语言都可用来写 Shell 脚本,如 PHP, Ruby, Python, Perl,NodeJs 等,只是… read more »

shell: Linux进程管理

在Linux中,关于进程的管理是比较常用的操作,在这一节中我们将探究进程控制相关的操作。为了方便我们查看区分不同的进行,我们编写如下程序,其功能是每间隔2秒输出一次自己的编号。 1 将进程放入后台 在shell编程环境中,可以使用组合键CTRL+Z将前台正在运行的程序放入后台,但是程序会暂停执行。示例如下: 如上所示,我们运行了3个进程,并且给每个进程指定一个不同的编号,如2000、 2001、 2002,借此我们可以知道当前哪一个进程在运行。当我们按下 Ctrl+Z 组合键后,进程会被放到后台并且暂停,同时我们可以看到输出了一行字符串,类似于“ [1]+ Stopped./bgtest 2000”,要注意中括号[]中的数字就是系统自动生成的后台任务编号。 2 查看后台程序 在前面,我们已经将3个进程放到后台了,但是我们如何查看呢?可以使用 jobs 命令,用法如下: 该命令输出有3列,第一列为任务编号,第二列为任务的状态,第三列为程序名。我们可以看到,所有的进程被放入到后台以后全部都暂停了。 3 后台运行程序 如何让后台被暂停的程序重新运行呢?我们可以使用命令“ bg 任务编号 ”来让程序在后台运行,如下所示就是让任务编号为1的程序重新运行。 我们可以看到,程序会继续输出字符串,但是,真个并不影响我们接着执行其他命令,比如我们这是继续使用jobs命令,可以查看到后台运行的程序的状态,也看到任务1的状态改为了“Running”。 4 让程序前台运行 当然,我们也可以让被放到后台的程序重新回到前台运行,可以执行“ fg 任务编号 ”,如下所示: 可以看到,程序在前台运行时,如果我们输入其他命令是不能响应的,整个前台被当前运行的任务3独占。我们必须将其重新放入到后台才能够输入其他命令。 5 杀死前台进程 杀死前台进程比较容易,我们可以直接使用组合键… read more »

shell: 如何在shell脚本中通过正则表达式匹配IP地址?

在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址。 shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip=”121.0.2.2>”为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现): 原文:http://www.yunweipai.com/archives/4660.html

shell: bash关联数组

#声明一个数组 declare -A thearray -a Each name is an indexed array variable (see Arrays above). -A Each name is an associative array variable (see Arrays above). #没有这个说明bash的版本在4.0一下 关联数组的操作语法和数组的操作语法完全一致,如下常见的操作。 语法 描述 ${!array[*]} 取关联数组所有键 ${!array[@]} 取关联数组所有键 ${array[*]}… read more »

shell: Shell(二):变量、数据重定向和管道

在上一篇博客 Shell(一):功能、配置和插件中,介绍了为什么要使用shell,shell有哪些功能,如何使用 oh my zsh来提高效率等,本篇重点介绍,shell中的 变量的如何设置和读取数据,读取之后如何使用变量?每个程序一般都有输入和输出,让我们看看 数据重定向如何处理输入和输出的?还有,Unix/Linux系统提供丰富的工具,我们如何将这些工具通过 管道来组合成更加强大的宏工具呢?下面,由我来逐一详细介绍变量、数据重定向和管道。 Variable & Redirection & Pipe.png 变量 变量的作用 变量与其他程序设计语言一样,都是 存储数据,然后被程序引用。相比于不使用变量,而是直接使用数据,存在两个问题: 当数据改变时,直接使用数据的时候却不能灵活地根据数据改变而随着改变,而使用变量却不同,它能够做到这点。 当数据发生变化时,如果想保证数据 一致性,必须查找所有引用该数据的所有地方,然后将它修改,当下一次再需要修改时,也是像这种情况一样,是多么繁琐的事,而变量却不用,只需要修改变量值即可。 因此,变量具有 可变性和 易于修改的两个特点。 变量的分类 在shell中,大概分为两种变量: 环境变量和 局部变量,主要区别在于它们的使用范围不同,环境变量可以在父进程与子进程之间共享,而自定义变量只在本进程使用。举一个简单的例子来说明: no share variable.png 我首先设置一个shell变量 devname=sam,然后输入 bash打开一个新的shell,而这个shell是 子进程,然后 echo… read more »

shell: shell的历史

shell的历史 shell概况 人想要和操作系统进行交互,传送指令给操作系统,就需要使用到shell。宏义的shell是人与机器交互的页面,它分为两种,一种是有界面的,比如GUI,另外一种是没有界面的,完全是指令操作的(CLI)。我们一般说的shell指的就是命令行界面。 Bourne shell 最早Ken Thompson设计Unix的时候,使用的是命令解释器,命令解释器接受用户的命令,然后解释他们并执行。 后来出现了Bourne shell(通称为sh),顾名思义,就是一个叫Bourne shell创建的。对,它就是现在我们机器上面的/bin/sh这个可执行文件。这个老哥创建的sh一直沿用至今,现在的UNIX操作系统都配置有sh,而且各种新的shell都会向后兼容sh的语法。 Bourne shell 带来了: 脚本可以写在文件里被调用,比如sh a.sh可以执行a.sh里面的shell命令 可以交互或者非交互的方式调用 可以同步执行也可以异步执行 支持输入输出的pipeline,就是管道方式 支持输入输出的重定向,就是现在使用的> 和 >> 提供一系列内置命令 提供流程控制基本的函数和结构 弱类型变量,就是可以直接 a=1,不需要指定a为int 提供本地和全局的变量作用域 脚本执行前不需要编译 去掉goto功能 使用“进行命令执行替换 增加了for~do~done的循环 增加了case~in~esac的条件选择 文件描述符2>代表错误信息导出 csh, ksh Bourne老爷子创造的sh非常强大,后来引入的争议是Unix系统是C写的,为什么你的shell的语法不像C呢?然后Bill… read more »

shell: 利用crontab命令定时执行任务反弹shell后门

作者:柠檬草 出自安全盒子团队:www.secbox.cn blog: http://www.iamstudy.cn 猪猪侠发的文章: http://zone.wooyun.org/content/18244 1、基础知识 http://www.cnblogs.com/kerrycode/p/3238346.html 当前用户的计划任务 crontab -l  查看计划任务 -r 删除所有定时计划任务 -e  编辑计划任务 任务的格式:分 时 天 月 年 用户 命令 * * * * * root /home/oracle/test.sh 1>/home/oracle/log.txt & 2、shell反弹 nc版的shell反弹: (crontab… read more »

shell: 大文件重定向和管道的效率对比

微博上的@拉风_zhang提出了个问题: @淘宝褚霸 请教个问题,#1. cat huge_dump.sql | mysql -uroot ;#2. mysql -uroot < huge_dump.sql ;#1效率要高,在linux中通过管道传输 和 < 这种方式有什么差别呢?谢谢!#AskBaye# 这个问题挺有意思的,我的第一反应是: 没比较过,应该是一样的,一个是cat负责打开文件,一个是bash 这种场景在MySQL运维操作里面应该比较多,所以就花了点时间做了个比较和原理上的分析: 我们先构造场景: 首先准备一个程序b.out来模拟mysql对数据的消耗: $cat b.c #include int main(int argc, char *argv[]) {  char buf[4096];  while(fread(buf, sizeof(buf),... read more »

shell: 使用 SSH 和 shell 脚本部署 Docker 镜像

译者按:在本专栏的前面的文章中,我们已经提到过使用 Docker 的基本方法,因此本次讲解一下 使用 SSH 和 shell 脚本进行 Docker 镜像的自动化部署 ,原文仅供参考,因为对于 Docker 镜像,我们可以有更好的解决方案: Docker Registry Hub 。但是,本文仍然可以作为 shell 脚本的参考范例。 背景 当我们将本站转移到 Docker 容器内之后,我一直在寻求能进行自动化构建和部署镜像的方法。毫无疑问,Docker 本身是一个非常完美的应用容器,但是 Docker 并没有提供能够自动化更新镜像的标准方法。当然,我写了一些 shell 脚本,实现了 Docker 容器镜像的自动化部署。 我们假设基础架构是一台 Linux 宿主机和几个独立的 Docker 镜像,没有网站运行时产生的动态文件,例如用户上传的文件。… read more »

shell: shell中函数返回值

1、前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了。为了鞭策自己成长,还是要坚持写写博客,记录自己的成长。 2、shell函数介绍 语法: 说明: (1)可以带function fun()  定义,也可以直接fun() 定义,不带任何参数。 (2)参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255),还可以通过echo 直接返回。 3、注意 shell中通过return返回是有限制的,最大返回255,超过255,则从0开始计算。 今天在工作中犯了这个错误,导致输出的值不对,被测试部提bug。 shell脚本调用例子: 执行结果如下所示: 原文:http://www.cnblogs.com/Anker/p/4529465.html

shell: 隧道和网络虚拟化:NVGRE vs VXLAN

关于NVGRE和VXLAN隧道协议相信大家都不陌生,但是事实上隧道协议只是虚拟化网络中的一部分,它并不提供实质性的功能,只是定义不同虚拟机之间如何封装、转发数据包。本文想强调两点:其一,NVGRE和VXLAN都是用三层协议封装二层协议;其二,这两项技术都解决了VLAN规模固定的问题,不再局限于4094个。随着各种新技术的兴起,一项标准已经无法满足需求,技术巨头们争先恐后的想让自己的标准成为业内统一的标准,其中NVGRE和VXLAN就是典型的例子,那么这两项技术的区别到底在哪里呢? VXLAN VXLAN主要是由Cisco推出的,VXLAN的包头有一个24bit的ID段,即意味着1600万个独一无二的虚拟网段,这个ID通常是对UDP端口采取伪随机算法而生成的(UDP端口是由该帧中的原始MAC Hash生成的)。这样做的好处是可以保证基于5元组的负载均衡,保存VM之间数据包的顺序,具体做法是将数据包内部的MAC组映射到唯一的UDP端口组。将二层广播被转换成IP组播,VXLAN使用IP组播在虚拟网段中泛洪而且依赖于动态MAC学习。VXLAN封装将数据包大小扩展到50字节,如下图所示: 由于数据包比较大,所以VXLAN需要借助支持大型帧的传输网络才能支持数据包规模的扩展。 NVGRE NVGRE主要支持者是Microsoft。与VXLAN不同的是,NVGRE没有采用标准传输协议(TCP/UDP),而是借助通用路由封装协议(GRE)。NVGRE使用GRE头部的低24位作为租户网络标识符(TNI),与VXLAN一样可以支持1600个虚拟网络。为了提供描述带宽利用率粒度的流,传输网络需要使用GRE头,但是这导致NVGRE不能兼容传统负载均衡,这是NVGRE与VXLAN相比最大的区别也是最大的不足。为了提高负载均衡能力建议每个NVGRE主机使用多个IP地址,确保更多流量能够被负载均衡。 NVGRE不需要依赖泛洪和IP组播进行学习,而是以一种更灵活的方式进行广播,但是这需要依赖硬件/供应商。最后一个区别关于分片,NVGRE支持减小数据包最大传输单元以减小内部虚拟网络数据包大小,不需要要求传输网络支持传输大型帧。 实验 OVS(open Vswitch)可以支持这两种隧道协议。可以实现两个虚拟机的简单通信,在两个主机上面分别运行VM,并且在这个VM之间创建一个隧道。如果没有GRE隧道,两个VM就无法连接。在主机之间创建隧道的简单步骤: 1、主机1配置如下: Shell 2、主机2配置如下: Shell 在每台主机中创建2个桥,其中brvm用于仿真虚拟机,另一个brgre用作与其他主机的做隧道(VTEP)连接。eth0连接brgre,brgre绑定IP用于实现隧道。为了简化实验,我将GRE隧道设置在同一子网中,当然可以放于不同域中使仿真场景更真实。下面就可以进行测试了,10.1.2.10和10.2.1.11应该是可以ping通的,这两个VM域通过隧道连接,同样,也可以改成VXLAN隧道配置。 原文链接:http://www.ran-lifshitz.com/2014/08/24/tunneling-and-network-virtualization-nvgre-vxlan/(译者:房超 审校:方辉) 原文:http://www.sdnlab.com/11819.html

shell: 在 Mac OS X 的网络账户中修改 shell(chsh)

本站文章除注明转载外,均为本站原创或者翻译。 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商; 本站部分原创和翻译文章提供markdown格式源码,欢迎使用 文章源码进行转载; 本文标题:在 Mac OS X 的网络账户中修改 shell(chsh) 本文链接: http://zengrong.net/post/2292.htm 在 Mac OS X 上,我们可以在 Users & Groups设置中指定 Network Account Server来开启网络账户的登录。但是,当我试图讲网络账户的默认 shell 从 bash 修改为 zsh 的时候,出现了问题。 直接执行 chsh命令,会在默认编辑器中打开下面的内容: 当编辑了 shell:的值之后,保存会出现这样的提示: chsh: Operation… read more »

Sidebar