设为首页 收藏本站
查看: 601|回复: 0

常用的shell命令整理

[复制链接]

尚未签到

发表于 2018-8-23 13:03:00 | 显示全部楼层 |阅读模式
  工作快一年了,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添加的判断的另一个方式
  判断参数的个数
if (( $# < 1 ))  
then
  echo "Usage: $0 worker_id"
  exit 1
  
fi
  
if (( $# == 1 ))
  
then
  WORKER_ID=$1
  MAX_WORKER_ID=$WORKER_ID
  
elif (( $# > 1 ))
  
then
  echo "Usage: $0 [worker_id]"
  exit 1
  
else
  echo "worker count $WORKER_CNT"
  
fi
  16、ipcs 查看共享内存的使用的情况这样写if的条件的判断就和c语言的一样了,条件运算
  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循环
for((i=1;i 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命令整理
  关于我:成长的企鹅简介



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555572-1-1.html 上篇帖子: shell环境设定 下篇帖子: nginx_logrotate shell
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表