工作中用到的一些基础命令
Author:madding.lip
data:2010.12.19
引言:
本文介绍的内容比较易懂,并结合工作中常遇到的问题提出一些解决方法。限于篇幅,本文只阐述其中一种或几种方法。条条大路通罗马,如有兴趣可线下交流。具体的shell以附件形式提供,非常简单
目的:
本文主要以解决实际问题为出发点书写
场景:
你在查看线上日志或者数据订正时是否遇到过以下场景:
1.pd提了个需求,说要把1000个会员的mobileno删除掉,提供的是1000个会员的会员id
2.自己要写个简单的shell统计一些目前线上的日志情况,比如apache中百度爬虫一天的访问量
3.需要把两个文件合并成一个文件,比如第一个文件是会员id和邮箱id,第二个文件是会员id和密码id,要获取到密码id和邮箱id的对应关系
如果有类似疑问,本文可能比较适合你阅读,废话少说,开始介绍
基础:
1.语言类型:shell是解释型语言
2.处理对象:文件与目录
3.优点:简单、可移植、易开发
4.缺点:效率不高、数值处理差
5.基本格式:(说明:为了可移植性,第一行长度尽量限制在64Byte内,包括空格)
#!/bin/bash
…...
#define constants
…......
#checkinput paremeters
….....
#deal
...
exit$EXIT_CODE
6.基本命令分类:内建命令、函数、外部命令
7.常用命令:这个需要积累,以后有空会对每一块作单独分享,任何语言本身都不难,难得是基于一堆现有的东西进行筛选,开发,扩展。shell本身的语法是非常简单,但是要把awk、sed、grep等工具用好需要长期积累,本文只罗列可能用的命令的基本使用。
命令:
1.输出:
echo:显示输出,并且默认换行,加个-n就默认不换行。
这个主要用在调试代码或者提示脚本使用时比较常用。
举例1:你需要判断一个脚本的输入参数是否为两个,不是则提示用法并退出
if [ $# -ne "2"]
then
echo "Usage:`basename $0` filename update"
exit $E_BADARGS
fi
举例2:提示脚本不能使用root权限运行,线上脚本都是不允许这么作的,写法也是比较简单的。
ROOT_UID=0
if [ "$UID"-ne "$ROOT_UID" ]
then
echo "Mustbe root to run this script."
exit $E_NOTROOT
fi
echo的输出比较单调,学过c的话可以使用printf,语法和c一致
2.输入:
文件输入:<file
输入命令的输出结果:|
控制台输入:read、< /dev/tty
输入一般用在交互比较多的地方,其他一般采用参数来传递内容。
目前线上用的比较少,一般线上的脚本不需要动态交互,我举个使用场景,主要是在执行时输入密码,一般用在管理机器上面
举例3:运行过程中控制台输入密码
echo -n "pleaseinput your password: "
while [ -z $pass]; do
stty -echo
read pass </dev/tty
stty echo
if [ -z $pass];then
echo ""
echo -n"please input your password: "
fi
done
echo ""
echo "youinput password: $pass"
3.查找
文件查找:findfind命令查找的方法很多,可以按文件名,文件类型,accesstime、modifytime查找,由于线上查找一般是admin查找,所以当查找一些没有权限的目录时会抛出一堆异常信息,可以在find命令后面加
2>/dev/null即可过滤掉
举例4:大部分人都知道linux里面有个ifconfig,可是如果你到线上却找不到对应的命令,如果你对linux比较模型可能不知道目录分布规律,所以这时可能会用查找命令。
Find / -name ifconfig
不过find命令更多的是结合其他命令一起使用,find主要用来获取具体的文件路径,传递给其他命令使用
文本查找:grep
grep的扩展和用法都非常多,包括正则表达式等,grep命令有egrep、fgrep等也可以用grep-e等带参数形式替代。
举例5:查看目前线上是否有个脚本在运行,比如脚本关键字是UpdateOfferSearchRecommend
ps aux | grepUpdateOfferSearchRecommend | grep -v grep
命令首先获取目前运行的所有帐号下的所有进程,第一个grep匹配出含有关键字的进程,第二个匹配出含有grep的进程,因为grep命令在运行时也是个进程,相当于过滤grep进程
举例6:查看某个目录(包含子目录)下的文件中包含特征字符串的信息,特征字符串为{127.0.0.1},这个在线上查找或统计某些错误时使用的比较多
find. -name filename |
xargsgrep
{127.0.0.1}
变化一下,查找目前工程中有哪些子工程中引入了某个jar包。由于查找的信息一般是查看上下2行信息,以便查看版本和groupdId。
find . -namepom.xml | xargs grep -n2 "toolkit.common.logging"
4.替换
替换是经常作的事,场景1描述的就是一种需求,让我们来把场景1细化。
举例7:1000个会员id的文件名为member_id.txt,这个换行符一般是windows下的格式
要改成以下命令格式:update member set mobile_no=null where member_id='xxx'
那么该怎么处理呢
书写sed脚本:
s//r//g
s/^/update/ member/ set/ mobile_no=null/ where/ member_id=/'/g
s/$//';/g
在通过sed脚本把sed命令引入即可:
sed -fmember_id.sed member_id.txt > member_id.result
来解释一下脚本做了哪些事情:
第一行把所以windows中的^M,即换行符替换为linux下面的格式
第二行把开通的内容替换为update member set mobile_no=null wheremember_id=',由于空格和‘号是特殊字符,因此需要转义
第三行把行尾替换为';,
最后通过外部文件把组装好的内容重定向到另一个文件。注意不能重定向到原来文件,要不然内容全部为空,可以想想为什么:)
5.排版
排版是目前最常用的脚本之一,主要是用来处理日志内容和文件处理
举例8:用空格分割获取线上第六行和第八行的数据,分别是对应的member_id和对应执行sql的毫秒数,主要统计线上某个member_id对应执行的sql的时间。
Awk -f ' ''{print $6 “ ” $8}' filename
以上是文本处理比较常用的内容,还有一些比较实用的命令比如:
1.查看服务器版本:lsb_release-a
2.查看内核版本:uname-r,
uname-a则更详细
3.查看网络信息:/sbin/ifconfig,服务器上一般不把这个目录加到path中,主要是为了安全,可以想想看如果加了为什么会不安全
4.查看某个端口被哪个进程占用:netstat-anp | grep 8081或者lsof-i:8081,会看到进程,然后想看详细信息就查进程吧:)
5.linux下不同进制转换:echo'ibase=10;obase=2;225'|bc把10进制的225转成二进制,主要用来把member的multisign和offer的sign转成二进制查看
6.获取javathread dump信息:kill-3 pid
7.登录某台机器执行脚本后退出并显示结果:线上的预发布机器就是跳板机因此可以不用输入密码就能登录服务器,可以书写如下:ssh-q
server-web2201 grep ERROR~/output/log/sys/webx.log
8.把一个文件拷贝到另一个服务器:scpfilename
username@username'sip
回车后输入密码
9.查看内核支持的位数:getconfLONG_BIT、uname-a
10.查看cpu的位数:grepflags/proc/cpuinfo,lm64;
pm 32; rm 16
谢谢
分享到:
相关推荐
实验84-Linux命令:基础命令1
linux基础命令linux基础命令
Linux系统基础命令;2;3;Linux命令行操作技巧;登录命令1: login (1);登录命令1: login (2);登录命令2: last;登录命令3: exit;电源命令1: shutdown (1);电源命令1: shutdown (2);电源命令2: halt;电源命令3: reboot;...
从这里开始学习Linux命令,本课程让你更清楚地了解和掌握它,在Linux中命令是讲究大小写的,所以请管好你的Caps Lock键。 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章及教程基本能满足不同...
Linux基础命令学习.chmLinux基础命令学习.chmLinux基础命令学习.chmLinux基础命令学习.chmLinux基础命令学习.chmLinux基础命令学习.chmLinux基础命令学习.chm
学习linux之后可能使用最多的命令-ls命令。 ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令...
linux 中删除文件和目录的命令: rm 命令。 rm 是常用的命令,该命令的功能为删除一个录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均...
pwd(Print Working Directory的缩写)是一个常用的Linux和Unix命令,用于显示当前工作目录的路径。当前工作目录是你当前正在工作的目录,即你执行命令时所处的目录。下面是关于pwd命令的详细解释: 命令格式: ...
就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用...
这份资料包括有LInux中的基础命令以及基础命令的详解。
Linux网络操作系统基础:Linux命令基础知识.pptx
Linux常用命令大全Linux常用命令深入理解Linux内核鸟哥的Linux私房菜Linux命令学习资料(12个): Linux命令大全(Linuxidc.com修改版).chm Linux命令学习.chm Linux基础命令教程(豪华版).chm LINUX安全加固手册.doc ...
就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用...
Linux课件(ppt)外加一个《Linux命令大全》: Linux_内核完全注释_V11.pdf VI的常见用法.doc 第1章 Linux概况及安装.ppt 第2章 Linux的常用命令.ppt 第3章 Linux系统管理.ppt 第4章 Linux网络基础.ppt 第5章 ...
豪华版主张学到更多的Linux命令知识。 从这里开始学习Linux命令,本课程让你更清楚地了解和掌握它,在Linux中命令是讲究大小写的,所以请管好你的Caps Lock键。 不用担心,Linux命令说到底是几个字母的东西,你...
linux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.ziplinux基础命令学习总结.zip...
Linux基础命令.pdfLinux基础命令.pdf
要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理 解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者 把比较重要和使用频率最多的...
Linux系统基础命令;2;文件命令: pwd;文件命令: cd;文件命令: cd使用示例;文件命令: ls;[root@localhost ~]# ls /usr/local/ -ahlt total 48K drwxr-xr-x. 12 root root 4.0K Jul 28 14:00 .. drwxr-xr-x. 12 root ...
Linux基础命令,很全面的。