Below you will find pages that utilize the taxonomy term “shell”
November 30, 2022
shell终端配置
"oh-my-zsh 是一款非常不错的shell配置,最近几年一直是重度用户。由于一些原因经常登录一些服务器,这里根据自己的习惯做一个笔记,以后不用每一次都要重新从各个地方找安装脚本了。\n安装 zsh 安装zsh 一般系统默认的都是bash,所以我们先安装 zsh。如果不清楚当前使用的哪一类shell的,可通过以下命令查看\n$ cat $SHELL /bin/bash 我这里使用的默认shell。根据平台选择相应的安装zsh命令, 我这里是Ubuntu系统。\nLinux、Debian平台\nsudo apt install -y zsh macOS\nbrew install zsh Centos/RHE\nsudo yum update \u0026amp;\u0026amp; sudo yum -y install zsh 确认版本 $ zsh --version zsh 5.8.1 (aarch64-unknown-linux-gnu) 查看 /etc/shell 看是否存在zsh\n$ cat /etc/shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash …"
October 30, 2011
一个自动检测服务器网络状态的脚本
"最近服务器总是莫明奇妙的网络不通。我在上一篇文章里写了一个自动检测网卡状态的脚本: http://blog.haohtml.com/archives/11827.但发现服务器仍然出现此问题.但服务器内部运行正常.这里基本可以确认是与外网不通的原因.就写了一个脚本,用来检测网络状态,在不通的情况就重启服务器了.此解决办法相当的变态.最好不要使用.\n1.创建新文件 /data/check_net_status.sh,内容如下\n#!/bin/bash if [ $# -ne 1 ] then echo \u0026#39;ip address not defined!\u0026#39; exit fi ip=$1 log_file=\u0026#34;$(date +%Y%m%d).log\u0026#34; ret=`ping -c 10 $ip | grep ttl | wc -l` if [ $ret -lt 2 ]; then echo \u0026#34;$(date +%H:%M:%S) ===== reboot\u0026#34; \u0026gt;\u0026gt; $log_file shutdown -r now fi 添加执行权限\nchmod …"
July 22, 2011
使用sed处理php-fpm.conf和nginx.conf文本里的注释信息
"默认系统环境安装教程: http://blog.haohtml.com/archives/6051\nphp-fpm.conf:\n想自己搞一个自动修改php-fpm.conf的shell脚本.刚安装的php,默认的是nobody用户运行的,这里修改为了www,并去掉了两边的注释符\nsed ‘63,66s/|–\u0026gt;//g’ php-fpm.conf | sed ‘s/nobody/www/g’\n上面将”“和”–\u0026gt;“两个字符串全部删除了.多个之间用”|“符号隔开\ns前面的63,66为处理的行号,如果为一行的话,直接指定一个行号就可以了.这里使用了从63行到66行中间的数据,包括这两行.\nnginx.conf\n下面的命令是用来配置nginx.conf文件的\nsed \u0026#39;2s/nobody/www/\u0026#39; /usr/local/nginx/conf/nginx.conf.default | sed \u0026#39;2s/#//g\u0026#39;| sed \u0026#39;64,71s/#//g\u0026#39; | sed …"
July 22, 2011
用shell和php脚本实现定时检测服务器情况
"实现原理,利用 cron来定时执行一个shell脚本,如果发现服务器不通或者上次故障后恢复正常,则发送邮件.否则不用发送邮件. 目前此Shell在FreeBSD和Linux下均可以正常运行.\nping.sh\n#!/bin/bash if [ $# -ne 1 ] then echo \u0026#39;must have one param,must be ip address format!\u0026#39; exit fi ip=$1 tmpfile=/tmp/$ip.txt if [ -f $tmpfile ]; then lastmsg=`cat $tmpfile` else lastmsg=\u0026#39;YES\u0026#39; fi ret=`ping -c 3 $ip | grep ttl | wc -l` if [ $ret -lt 2 ]; then echo \u0026#39;NO\u0026#39; \u0026gt; $tmpfile /usr/local/bin/php /data/haohtml.com/www/ping.php $ip \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 elif [ …"
July 21, 2011
一个简单的ping检测服务器状态的shell脚本
"这个脚本特别的简单的,一次只能检测一个ip地址,可以放在crontab里定时检测.可以用来检测服务器状态情况.特别的实用的,如果有多个ip地址的话,可能必定一下,循环一下就可以了.\n只有当不通或者宕机后恢复正常的时候才发送指定消息.\n#!/bin/bash if [ $# -ne 1 ] then echo \u0026#39;must have one params ip address format!\u0026#39; exit fi ip=$1 tmpfile=$ip.txt if [ -f $tmpfile ]; then lastmsg=`cat $tmpfile` else lastmsg=\u0026#39;YES\u0026#39; fi ret=`ping -c 3 $ip | grep ttl | wc -l` if [ $ret -lt 2 ]; then echo \u0026#39;NO\u0026#39; \u0026gt; $tmpfile echo \u0026#39;send waring message!\u0026#39; //这里可以执行php脚本,用来 发送邮件信息 elif [ $lastmsg = \u0026#39;NO\u0026#39; …"
July 21, 2011
linux中的shell重定向
"下面的shell 可不可以详细解释一下呀? (ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file (ls you no 2\u0026gt;\u0026amp;1;ls yes 2\u0026gt;\u0026amp;1)|egrep * \u0026gt;file (ls you no;ls yes) 2\u0026gt;\u0026amp;1|egrep * \u0026gt;file\n2\u0026gt;\u0026amp;1又是什么意思呀?? 在 shell中 \u0026gt;代表输出重定向\n0表示标准输入 1表示标准输出(默认值) 2表示标准错误输出 2\u0026gt;\u0026amp;1意思是:把 标准错误输出 重定向到 标准输出. ls xxx \u0026gt;out.txt 2\u0026gt;\u0026amp;1, 实际上可换成 ls xxx 1\u0026gt;out.txt 2\u0026gt;\u0026amp;1;重定向符号\u0026gt;默认是1,错误和输出都传到out.txt了。\n|:是管道,例子: cmd1 | cmd2 意思是:命令cmd1的标准输出座位cmd2的标准输入.\n详细解释第三个命令行,(ls you no;ls yes) …"
December 16, 2010
Freebsd下安装bash
"FreeBSD下默认的shell为CSH,可以通过命令\necho $SHELL\n来查看系统默认的shell是哪一个的。\n想知道FreeBSD都支持哪些shell,可以用下面的命令进行查看的\n#cat /etc/shells\n默认只支持\n/bin/sh\n/bin/csh\n/bin/tcsh\n这三种shell的,平时我们经常用bash 来写shell脚本,特别是对于那些从linux转过来的用户来说,bash可能说无所不在的.但freebsd默认情况下并不支持bash的,我们可以手动安装一下bash的,命令如下:\n1.安装bash\ncd /usr/ports/shells/bash\nmake install clean\n2. 在/bin目录下面做一个符号连接。\nln -s /usr/local/bin/bash /bin/bash\n3.加入bash\necho ‘/bin/bash’ \u0026raquo; /etc/shells\n4.更改用户shell\nchsh -s /bin/bash root\n5.配置\nvi ~/.profile\nalias ls=’ls -G’ #显示颜色\nalias …"
November 19, 2010
shell中的test表达式
"摘自:UNIX Shell编程24学时编程\n10.1.2 使用test\n更常见的情况是,提供给if语句的清单是一个或更多个test命令,它们通过调用test命令而被激活,语法如下:\ntest expression\n这里,expression为test命令构造的表达式,该表达式的构造使用了特殊选项之一.在计算完表达式的值后,test命令或者返回0(真)或者返回1(假).\n可用”[“命令对test命令进行缩写:\n[ expression ]\n这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式.\ntest可理解的表达式类型分为三类:\n文件测试. 字符串比较. 数字比较.\n读者将逐步学业习这三类,另外,还会学习到复合表达式.\n注意:在使用”[“简写test时,左中括号后面的空格和右括号前面的空格是必需的,如果没有空格,Shell不可能辨别表达式何时开始何时结束.\n选项\n描述\n-b file\n若文件存在且是一个块特殊文件,则为真\n-c file\n若文件存在且是一个字符特殊文件,则为真\n-d file\n若文件存在且是一个目录,则为真\n-e …"
November 19, 2010
Shell中变量基础
"shell中的只读变量:使用readonly关键字,后面加上变量名即可,如\n#name=’sxf’\n#readonly name\n即可.如果后面修改name的值,如\n#name=’tom’\n会提示\n"-bash: name: readonly variable"\n错误信息.\n在shell中删除变量只要用\nunset variable\n即可.但不能删除只读变量.\nshell中环境变量分三种:局部变量,环境变量,Shell变量\n局部变量(local variable)是只在当前shell实例中存在的变量,而由其他Shel启动的程序不能使用该变量.\n环境变量(environment variable)是Shell的任何子进程都能使用的变量,许多程序要正确运行都需要使用环境变量.通常Shell脚本只定义程序运行时所需要的环境变量.\nShell变量(Shell variable)是Shell变量的特殊变量,也是Shell正确运行所必需的,这些变量有些是环境变量而有些是局部变量.\n通常,为清楚地表示该变量是环境变量,一般将赋值语句和导出语句写在同一行,这可以帮助下一个维护该脚本的程序员快速了解这些 …"
November 16, 2010
shell test操作运算符
"4.4 控制结构\n在shell脚本中,使用控制结构就可以控制Linux命令的执行。使用控制结构,可以重复执行命令,或者选择特定的命令。控制结构包含两个主要的组件:测试操作(test)和命令。如果测试操作成功,则命令就会执行。这样的话,就可以使用控制结构来决定是否执行选定的命令。\n存在两种不同类型的控制结构:循环和条件。循环结构会重复执行命令,而条件结构会在特定条件满足时执行命令。\nBASH Shell有三种循环控制结构:while、for和for-in,两种条件控制结构:if和case。控制结构把Linux命令执行结果作为测试。\n所有的Linux命令在执行结束后都会返回一个退出状态。如果某命令成功执行,退出状态将是0。如果因为某种原因该命令执行失败,则退出状态是表示失败类型的一个正值。控制结构会检查Linux命令的退出状态是0,还是其他值。对于if和while控制结构,如果退出状态是0,则说明该命令被成功执行,控制结构会继续。\n4.4.1 test操作\n借助于test命令,可以比较整数、字符串,甚至执行逻辑操作。命令由关键字test,以及被比较值组成;被比较数值之间使用一个选项分隔开, …"
July 3, 2010
FreeBSD 修改默认SHELL
"FreeBSD下默认的shell为CSH,可以通过命令 echo $SHELL来查看系统默认的shell是哪一个的。\n显示自己所使用的SHEEL命令: ps或echo $SHELL 修改默认SHELL为csh name:是指你登陆的名称\npw usermod -n name -s csh\n查看所有支持的shell\nfreebsd# cat /etc/shells /bin/sh /bin/csh /bin/tcsh\n到于bash的安装请参考:"