常用的shell命令整理
工作快一年了,shell命令也玩了一年了。还是有点积累的,下面是本人常用的。
1、pwd | xargs -i basename {} 获取当前所在目录的名称
2、ps -ef|grep -w indexd_admin_mcd.pid|grep -v grep|wc -l
ps -ef 查找进程 grep -v 查找不存在 grep -w 强制 PATTERN 仅匹配整个词
查找进程中为 indexd_admin_mcd.pid的进程,并且排除掉grep的进程。最后计数,这样进程的个数。
3、if [ $cn -lt 1 ] 如果cn的值< 1
4、ulimit -c 最大的core文件的大小,以blocks为单位。 ulimit -c unlimited 对生成的core文件大小不进行限制。
5、kill
kill -9 pid,是不顾后果的强制终止(如果的你的速度够快,有时候是和ctrl+c是一样的)
kill -15 pid,是先关闭和其有关的程序,再将其关闭
6、crontab
crontab -l 显示crontab中的所有的内容
crontab filename 用新的文件代替crontab里的所有的内容。
所有想在crontab中添加新的自动运行的进程,则先用crontab -l >temp,先将crontab中所有的内容全部重定向到一个新的文件中,然后在这个temp文件后>>追加内容。最后用crontab temp,用temp的文件内容替代crontab的所有的内容。
crontab文件的格式:分 时 日 月 星期
7、$()与‘’的意思相同,获取shell执行后的值,但是用$()会更加的直观。 ${},{}中经常放的是变量,这样在${}就可以精确后面的变量的范围了。
${file#*/}:拿掉第一条/及其左边的字符串: dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条/及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个.及其左边的字符串:file.txt
${file##*.}:拿掉最后一个.及其左边的字符串:txt
${file%/*}:拿掉最后条/及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
8、运算
(( A )) 做运算的,A是任何的运算的表达式 A中的变量可用$来替换,也可以不用。
9、if 判断条件中 $# 和$? 是什么意思?
$# 获取参数的数目my.sh p1 "p2 p3" 为例 $#可得到2
$@ 与 $* 均可获得所有的参数 my.sh p1 "p2 p3" p4 $@ 与 $* 得到p1 p2 p3 p4
但是,如果置于 soft quote 中的话:
"$@" 则可得到 "p1" "p2 p3" "p4" 这三个不同的词段(word)
"$*" 则可得到 "p1 p2 p3 p4" 这一整串单一的词段。
10、在 shell command line 中可用 $? 这个变量得到最新的一个 return value ,也就是刚结束的那个行程传回的值。
* 若在 script 里,用 exit RV 来指定其值,若没指定,在结束时以最后一道命令之 RV 为值。
* 若在 function 里,则用 return RV 来代替 exit RV 即可。
11、重定向输出
* 2>&1 就是将 stderr 并进 stdout 作输出
* 1>&2 或 >&2 就是将 stdout 并进 stderr 作输出
ls my.file no.such.file 2>/dev/null
* 若将 FD1 跟 FD2 转到 /dev/null 去,就可将 stdout 与 stderr 弄不见掉。
* 若将 FD0 接到 /dev/null 来,那就是读进 nothing 。
>/dev/null 2>&1 单纯只跑程序,不想看到任何输出结果 除了用 >/dev/null 2>&1 之外,你还可以&>/dev/null
12、tee复制
所谓 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去。
cm1 | cm2 | tee file | cm3
在预设上, tee 会改写目标档案,若你要改为增加内容的话,那可用 -a 参数达成。
凡举 cat, more, head, tail, wc, expand, tr, grep, sed, awk, ... 等等文字处理工具,搭配起 pipe line 来使用
13、shell程序的参数
$0 当前程序的执行名字
$n 当前程序的第n个参数值,n=1..9
$* 当前程序的所有参数
$# 当前程序的参数个数
$$ 当前程序的PID
$! 执行上一个指令的PID
$? 执行上一个指令的返回值
14、date显示时间
date '+%F %T' 2012-08-27 15:52:54 等同于date +"%Y-%m-%d %T"
date -d '-1 days' +"%Y%m%d" 获取前一天的时间
15、if添加的判断的另一个方式
判断参数的个数
01 |
if (( $# < 1 )) |
02 |
then |
03 |
echo "Usage: $0 worker_id" |
04 |
exit 1 |
05 |
fi |
06 |
if (( $# == 1 )) |
07 |
then |
08 |
WORKER_ID=$1 |
09 |
MAX_WORKER_ID=$WORKER_ID |
10 |
elif (( $# > 1 )) |
11 |
then |
12 |
echo "Usage: $0 [worker_id]" |
13 |
exit 1 |
14 |
else |
15 |
echo "worker count $WORKER_CNT" |
16 |
fi |
这样写if的条件的判断就和c语言的一样了,条件运算
16、ipcs 查看共享内存的使用的情况
ipcrm -M shmid 关闭共享内存
17、make -p
即使data这个文件夹不存在,也可以创建他的子目录,当然同同时,他也被创建。
mkdir -p /data/coredump
18、head tail
head 是显示一个文件的内容的前多少行;
head -n 行数值 文件名;
比如我们显示/etc/profile的前10行内容,应该是:
[root@localhost ~]# head -n 10 /etc/profile
tail 工具,显示文件内容的最后几行,用法比较简单;
tail -n 行数值 文件名;
比如我们显示/etc/profile的最后5行内容,应该是:
[root@localhost ~]# tail -n 5 /etc/profile
更多:http://blog.csdn.net/carzyer/article/details/4759593
19、创建软链接
ln -sf a b b链向a
20、export 执行的路径
export LD_LIBRARY_PATH=./
21、if [ expr ]; then … fi
|
-n str |
字符串 str 是否不为空 |
|
-z str |
字符串是否为空 |
|
str1 = str2 |
str1是否与 str2 相同 |
|
str1 != str2 |
str1是否与 str2 不同 |
|
int1 -eq int2 |
等于 |
int1 -le int2 |
小于等于 |
|
int1 -ge int2 |
大于等于 |
int1 -lt int2 |
小于 |
|
int1 -gt int2 |
大于 |
int1 -ne int2 |
不等于 |
|
-b |
是否块文件 |
-p |
文件是否为一个命名管道 |
|
-c |
是否字符文件 |
-r |
文件是否可读 |
|
-d |
是否一个目录 * |
-s |
文件的长度是否不为零 |
|
-e |
文件是否存在 * |
-S |
是否为套接字文件 |
|
-f |
是否普通文件 * |
-x |
文件是否可执行,则为真 |
|
-g |
是否设置了文件的 SGID 位 |
-u |
是否设置了文件的 SUID 位 |
|
-G |
文件是否存在且归该组所有 |
-w |
文件是否可写,则为真 |
|
-k |
文件是否设置了的粘贴位 |
-t fd |
fd 是否是一个与终端相连的打开的文件描述符(fd 默认为 1) |
|
-O |
文件是否存在且归该用户所有 |
22、for循环
1 |
for((i=1;i<=100;++i)) |
2 |
do |
3 |
echo $i |
4 |
done |
23、对一行的第一列进行排重,只保留最新的数据。awk的内置的数组进行排重,排重之后在sort
01 |
filename=$1 |
02 |
awk ' |
03 |
{ |
04 |
cont[$1] = $0; |
05 |
} |
06 |
END { |
07 |
for (key in cont) |
08 |
{ |
09 |
print cont[key]; |
10 |
} |
11 |
}' $filename | sort -k1 |
24、显示上次文件的创建的时间
stat -c %Y $file
25、while循环
http://www.linuxidc.com/Linux/2011-02/32239p2.htm
http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html
26、查看当前目录下的文件的大小
du -h --max-depth=1
27、# nohup ./pso > pso.file 2>&1 &
解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。
当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。
http://www.cnblogs.com/xianghang123/archive/2011/08/02/2125511.html
28、将大文件分割为指定大小的文件
http://huangyandong.blog.51cto.com/1396940/690276
split -b 1m 20121018_quey.txt
29、对windows上传的文件进行处理,处理特殊字符
dos2unix over_wap_query_seed.20121023.txt
30、将window的^M回车符号换成linux的
tr -s "[\r]" "[\n]" < log.get
tr -s "[\015]" "\n" < log.get
31、在securecrt软件上显示用户名和ip
echo -ne "\e]2;${USER}@$(/sbin/ifconfig eth1 | awk -F"[ :]+" '/inet addr/{print $4}')\a"
如果你是root用户,把下面上面的那句命令行追加到 /etc/profile
如果你是个人账户,在自己的家目录新建一个 .profile 文件,把命令行追加到.profile文件
32、shell保留两位小数
echo "scale=2; 1*100/3" | bc
33、去掉变量的最后一个字符
AA=abcd
echo $AA | cut -c 1-$(expr ${#AA} - 1)
34、linux下如何查询已知进程运行目录
ls -l /proc/PID/cwd
最后为大家分享两个pdf文档,这是我入门学习shell时候用的。

原创文章,转载请注明: 转载自成长的企鹅
本文链接地址: 常用的shell命令整理
关于我:成长的企鹅简介
常用的shell命令整理的更多相关文章
- Lua 常用的shell命令
lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是 lua [选项参数] [脚本参数] (1)%lua 程序名.lua ...
- hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作
前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...
- Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)
阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...
- Linux的经典shell命令整理
Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p ...
- Hadoop集群常用的shell命令
Hadoop集群常用的shell命令 Hadoop集群常用的shell命令 查看Hadoop版本 hadoop -version 启动HDFS start-dfs.sh 启动YARN start-ya ...
- Liunx常用运维命令整理记录
前言 作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Liunx运维命令 基本命令 目录切换 cd base-admin/ 切换到当前目录下的base-admin目录 cd .. 切 ...
- 安卓日常开发和逆向中常用的shell命令与非shell命令
简述shell 命令与 非shell命令区别 shell命令不用先adb shell进入界面执行 非shell命令必须要 adb shell进入界面执行 基础非shell命令 1.安装app adb ...
- 常用Linux Shell命令,了解一下!
目录 1 前言 2 正文 2.1 关机/重启 2.2 echo 2.3 vim文本编辑器 2.3.1 最基本用法 2.3.2 常用快捷键 2.3.3 查找/替换 2.4 拷贝/删除/移动/重命名 2. ...
- kafuka常用的shell命令
kafka常用shell命令: ------------------------------------ 1.创建topic bin/kafka-topics.sh --create --zookee ...
随机推荐
- spark学习
大数据学习纲要,主要针对spark的相关知识的学习,后续会涉及其他大数据相关框架及语言. 1 spark入门: 2.spark 实战部分 3.spark源码解析
- c#操作MySQL数据库中文出现乱码(很多问号)的解决方法
前题:修改discuz论坛帖子老连接(从NT版转到PHP版的discuzX3),帖子里有很多引用,有链接都是.aspx这样的链接. 需要将这些链接改到当前论坛的链接. 思路:用asp.net程序获取含 ...
- C语言,函数的声明与定义
函数声明与定义 变量: 在讲变量前,先讲一下变量的声明和定义这两个概念. 声明一个变量,意味着向编译器描述变量的类型,但不为变量分配存储空间. 定义一个变量,意味着在声明变量的同时还要为变量分配存储空 ...
- JBoss 系列七十:一个简单的 CDI Web 应用
概述 本文通过一个简单的 CDI Web 应用演示dependency injection, scope, qualifiers 以及EL整合.应用部署完成后我们可以通过http://localhos ...
- XHTML CSS 常见问题和解决方案
原文地址:XHTML CSS 常见问题和解决方案 作为前端开发人员,在日常的页面制作时,不可避免的会碰上这样那样的问题,我挑选了其中的一些进行总结归档,希望对大家会有所帮助: 1.如何定义高度很小的容 ...
- codeforces 557D. Vitaly and Cycle 二分图染色
题目链接 n个点, m条边, 问最少加几条边可以出现一个奇环, 在这种情况下, 有多少种加边的方式. 具体看代码解释 #include<bits/stdc++.h> using names ...
- IOS 单例模式的学习
单例模式只能修改无法释放,直到程序结束. 我们下面一步一步来做一个单例模式程序 (1)单例一旦创建,是永远存在于内存中的,所以需要创建一个全局量 static MySingletonClass *sh ...
- 高频(工作频率为13.56MHz)
在该频率的感应器不再需要线圈进行绕制,可以通过腐蚀活着印刷的方式制作天线.感应器一般通过负载调制的方式 的方式进行工作.也就是通过感应器上的负载电阻的接通和断开促使读写器天线上的电压发生变化,实现用远 ...
- Phoenix——实现向HBase发送标准SQL语句
写在前面一: 本文总结基于HBase的SQL查询系统--Salesforce phoenix 写在前面二: 环境说明: 一.什么是Phoenix 摘自官网: Phoenix是一个提供hbase的sql ...
- ecshop标签大全 各个页面常用标签大全
先从index.php主页开始 页面关键字 {$keywords } 页面标题 {$page_title} 产品分类 父分类列表 {foreach from=$categories item=cat ...