个人 shell总结

$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数 

引号中使用$需要将其后内容加{}

vi编辑shell 首行#!/bin/sh
chmod +x filename.sh

[ -f "$file" ] 判断$file是否是一个文件
[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于
[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性
[ -n "$a" ] 判断变量$a是否有值,测试空串用-z
[ "$a" = "$b" ] 判断$a和$b的取值是否相等
[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立


grep
grep -A1 keyword filename 找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行(After 1)
grep -B1 keyword filename 找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1)
grep -1 keyword filename 找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1)和显示之后的一行(After 1)
grep -n xxx  显示匹配行及行号

hostname
hostname  显示系统主机名称
hostname -i 用来读取/etc/hosts中内容确认hostname对应的IP地址,该IP是开机启动后默认的ip

lsblk -b /dev/sdb -d -o size | tail -1 得到硬盘sdb的大小
-b以bytes方式显示设备大小。
-d不显示 slaves 或 holders
-o输出列
size列出硬盘容量大小 


交互式程序(命令)<<EOF
command1
command2
...
EOF
“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,可将其理解为分界符(delimiter)。


交互式程序(命令)<<-EOF
command1
command2
...
 (此处可留空格)    EOF
“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,可将其理解为分界符(delimiter)。

sed用法
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法

实例:
sed -e 4a\newLine testfile   输出testfile中内容并在其中第四行加入newLine(文本内容不改变)
nl /etc/passwd | sed '2,5d'  列出/etc/passwd内容并列出行号,同时将第2行到第5内容删除
nl /etc/passwd | sed '2d'    列出/etc/passwd内容并列出行号,同时将第2行删除
nl /etc/passwd | sed '3,$d'  列出/etc/passwd内容并列出行号,同时将第3行到最后一行删除
nl /etc/passwd | sed '2a drink tea' 列出/etc/passwd内容并列出行号,同时在第2行后(第三行)添加drink tea
nl /etc/passwd | sed '2i drink tea' 列出/etc/passwd内容并列出行号,同时在第2行插入drink tea
nl /etc/passwd | sed '2a Drink tea or ......\drink beer ?'在第三行添加Drink tea or ......在第四行添加drink beer ? 行之间需要添加\
nl /etc/passwd | sed '2,5c No 2-5 number'将第2-5行的内容取代成为No 2-5 number
nl /etc/passwd | sed '2,5c No 2-$ number'将第2行到最后一行的内容取代成为No 2-5 number
nl /etc/passwd | sed -n '5,7p' 仅列出 /etc/passwd 文件内的第 5-7 行
nl /etc/passwd | sed  '/root/d' 删除/etc/passwd所有包含root的行,其他行输出
nl /etc/passwd | sed -n  '/root/p' 搜索/etc/passwd有root关键字的行
nl /etc/passwd | sed  '/root/d' 删除/etc/passwd所有包含root的行,其他行输出
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'找到包含root的行,执行{}中内容,将bash替换为blueshell然后打印
替换操作
sed 's/要被取代的字串/新的字串/g'
/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 将含有inet addr行的inet addr替换为空

sed -i '$a\要插入的文字' file 在file的最后一行插入内容
sed -i "/bb/c\dd" testfile 将testfile中所有bb替换为dd
sed -i中使用变量
sed -i '$a\'${node_ip}' ansible_connection=ssh ansible_user=root' /root/ansible_deploy_ceph_1.0/hosts
需要将变量用''包含

将/etc/rc.d/rc.local文件中含有ifup_nic的行删除
sed -i '/ifup_nic/d' /etc/rc.d/rc.local

输出删除包含ifup_nic行的内容,文件为改动
sed -e '/ifup_nic/d'  /etc/rc.d/rc.local

输出 | sed -n '2p'显示输出的第二行
输出 | sed -n '2,$p'显示输出的第二行到最后一行

分割字符串,以:为分隔符,获得第二列内容
cat xx | cut -d \: -f 2 

安装pip:
# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install

hwclock -r  读取并打印硬件时钟
hwclock -s  将硬件时钟同步到系统时钟
hwclock -w  将系统时钟同步到硬件时钟


查看本机的文件系统用如下命令:
df -ahlT

查看系统版本
cat /etc/redhat-release
查看内核版本
uname -r

xargs从标准输入(stdin)中读取数据进行处理
find . -type d -name "*.svn" | xargs rm -rf //删除所有.svn文件
ps -aux | grep thrque.py |awk '{print $2}' |xargs kill -9  //终止thrque进程

fuser /mnt/ceph_device //显示被占用文件、套接字、文件系统的进程,输出结果为进程id+占用方式(c:在当前目录中,e:正在运行目录下可执行文件,f:打开文件)

使用yum下载iscsi-initiator-utils到/tmp路径下
yum install --downloadonly --downloaddir=/tmp iscsi-initiator-utils

安装netstat ifconfig命令
yum install net-tools


python程序会使用很多模块,通常安装模块的方法是找到官方网站,选择合适的版本下载安装,很麻烦。为了简化安装第三方的模块,python提供了easy_install工具,只需要一条命令就可以安装合适的模块,easy_install是python-setuptools包里的一个命令,所以只要安装python-setuptools就可以了。


1> 指标准信息输出到指定路径(也就是默认的输出方式)
2> 指错误信息输出到指定路径
2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)
例如:cat /tmp/disk 1> /tmp/res 2>&1 #将标准信息及错误信息同时输入到/tmp/res
等价于
cat /tmp/disk &> /tmp/res


修改hostname
hostnamectl set-hostname Linuxidc


修改/etc/fstab文件实现自动挂载
#label_or_uuid #mount_point # filesystem  #parameters #enable dump 0-no 1-everyday 2-indefinite  #enable check section 0-no 1-firs 2-scoend
UUID=cd8d59e6-296f-4d44-995b-a605db40b96e  /mnt/ceph_device1 ext4 defaults 0 0
其中uuid通过 blkid /dev/xvdc得到

启动apache
service httpd restart或者systemctl restart  httpd.service

禁用tcp6
vi /etc/sysctl.conf
添加
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
执行
sudo sysctl -p
查看
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
结果为1成功

永久关闭selinux
vi /etc/selinux/config
编辑
SELINUX=disabled 
临时关闭selinux
执行命令 setenforce 0

列出所有开机启动服务
systemctl list-unit-files | grep enable
systemctl list-unit-files | grep enable | grep iptables
查看httpd服务
systemctl list-dependencies httpd



设置服务开机自启动的两种方法
第一种:
首先将服务添加到chkconfig列表
chkconfig --add mysqld
然后设置开机启动/关闭 mysqld
chkconfig mysqld on/off
第二种:
vi /etc/rc.d/rc.local 
/etc/rc.d/init.d/mysqld start
centos7中直接使用
systemctl enable mysql

echo -n 'zjt'不换行输出
例如:
echo -n 'z'
echo -n 'jt'
输出zjt
echo -e "zhu\njt" > zjt #字符串中有换行时必须使用-e选项

添加用户
useradd username
给用户添加密码
passwd username
修改密码
passwd
更改文件用户
chown user filename
更改文件所属组
chgrp user filename
级联更改
chown user -R dir
同时更改用户和所属组
chown user.group -R dir

给tomcat用户添加sudo权限
chmod u+x /etc/sudoers
vi /etc/sudoers
在
root    ALL=(ALL)       ALL
下添加
tomcat  ALL=(ALL)       ALL
保存退出

yum -y -C install --disablerepo=* install_mysql_rpms/*.rpm --skip-broken

将ceph-10.2.7-rpm/压缩为tar.gz文件并放在当前目录
tar czvf install_ceph_rpms.tar.gz ceph-10.2.7-rpm/
查看tar.gz下面的路径
tar tvf vsftpd.tar.gz

解压.tar.bz2
tar -jxvf sm-1.12.2.tar.bz2

更改一个帐号可切换
usermod -s /bin/bash ceph
其实就是修改/etc/passwd对应的/sbin/nologin为/bin/bash


查看服务所依赖的自服务
systemctl list-dependencies ceph.target

设置开机启动,创建ceph-mon@${monName}与ceph-mon.target之间依赖
systemctl enable ceph-mon@${monName}

小数计算,保留1为小数(scale=1)
parted_size=`echo "scale=1; 13 / 2" | bc`


wc -l 统计个数
vi ctrl+r 与u相反,表示反撤销
vi批量替换字符串  
%s#xiyouji#xyj#g 将文件内所有xiyouji替换为xyj
%s#xiyouji#xyj#gc 将文件内所有xiyouji替换为xyj,并且在替换前先提示,如果替换的字符串或者被替换的字符串含有#,则将#改为/,例如%s/#xiyouji/#xyj/g
10,50s#abc#def#g  将文件从第10行到50行的内容中的abc替换为def

du -hs /home 显示home目录大小
du -hs       显示当前目录大小

添加yum源
cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

Home跳至行首 End跳至行尾
:0跳至第一行  :$跳至最后一行

清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages

清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers

清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders

清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

先查看所有的yum源
yum repolist all
再enable update.repo
yum-config-manager --enable Updates
其中yum-config-manager需要下载yum-utils包

将windows下文件格式转换为linux下文件格式
dos2unix configure_network.sh configure_network.sh
yum -y install dos2unix

产看盘类型
cat /sys/block/${disk}/queue/rotational
0:ssd
1:非ssd

终止防火墙
systemctl stop firewalld

查看文件详情
stat file

命令行一次执行多条命令
每个命令之间用;隔开,则每条命令并行执行
每个命令之间用&&隔开,则只有前一条执行成功才会执行下一条
每个命令之间用||隔开,则只有前面的命令执行失败才会执行下一条,直到执行成功为止。

查看系统支持的文件系统类型
ll /lib/modules/3.10.0-327.el7.x86_64/kernel/fs

查看分区文件系统
/sbin/blkid -p -s TYPE -o value -- /dev/xvdb1

将文件in中内容排序然后删除重复的行
sort -k2n in | uniq > out (in和out不能是同一个文件)
sort -k2n in | awk '{if ($0!=line) print;line=$0}'
sort -k2n in | sed '$!N; /^\(.*\)\n\1$/!P; D'
删除空行
cat 文件名 |awk ‘{if(length !=0) print $0}'

echo -e "\033[31m 红色字 \033[0m" 输出红色字体
echo -e "\033[41;37m TonyZhang \033[0m"
其中41的位置代表底色, 37的位置是代表字的颜色
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
 
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"
控制选项说明 :
\33[0m 关闭所有属性 
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色 
\33[40m -- \33[47m 设置背景色 
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标 

频繁启动停止服务问题
方法1
(使用systemctl找到启动文件)
ceph-mon@lum001.service
添加或修改StartLimitBurst=0
方法2
或者执行systemctl reload

查看网卡信息
ethtool eth0
查看网卡发射器tx 接收器rx 及自动协商状态
ethtool -a eth0
关闭发射器tx 
ethtool -a tx off eth0

关闭一张网卡
ifdown eth0
ifconfig eth0 down

删除当前路径文件除a外的所有文件
rm -fv !(a)

退出当前shell
exit n
其中n为退出码,约定如下:
0   表示成功(Zero - Success)
非0 表示失败(Non-Zero  - Failure)
2   表示用法不当(Incorrect Usage)
127 表示命令没有找到(Command Not Found)
126 表示不是可执行的(Not an executable)
>=128 信号产生

将sh进程在后台运行
nohup ./my-shell-script.sh &
其中nohup命令表示非中断,&在后台运行(只使用&则关闭终端后进程会停止)
安装nohub命令
yum install coreutils

实时监控空间大小
watch df -h

查看oracle用户信息
id -a oracle

部分命令使用了别名,通过命令
vi ~/.bashrc #重新打开终端,永久生效
alias cp='cp' #立即短暂生效

vi查看文件文件格式:
:set ff
vi设置文件文件格式:
: set ff=unix

[root@node02 ~]# umount /var/lib/ceph/osd/ceph-16
umount: /var/lib/ceph/osd/ceph-16: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

[root@node02 ~]# fuser -vm /var/lib/ceph/osd/ceph-16
                     USER        PID ACCESS COMMAND
/var/lib/ceph/osd/ceph-16:
                     root     kernel mount /var/lib/ceph/osd/ceph-16
                     root      16360 ..c.. bash
                     root      20655 ..c.. parted
                     root      23025 ..c.. fdisk
kill -9 16360

插入驱动到内核
insmod /opt/sandstone/lib/modules/4.4.0+2-x86_64/rbd/rbd.ko
删除驱动
rmmod rbd
查询驱动
lsmod | grep rbd
查看驱动具体信息
modinfo nbd

last
记录所有用户(重启操作)登录使用的终端信息,包含登录到登出时间
lastb
记录所有登录失败的用户信息

为系统添加内存交换分区(虚拟内存)
mkswap /dev/sdb2
查看现有交换分区大小
free -m
增加总交换分区
swapon /dev/sdb2
永久生效
编辑/etc/fstab添加/dev/sdb2 swap swap defaults 0 0 

跟踪blkid命令具体执行过程
strace blkid

ps -aux | grep **
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
VSZ表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS指明了当前实际占用了多少内存;
其中运行状态:
STAT 中的参数意义如下:
   D 不可中断 Uninterruptible(usually IO)
   R 正在运行,或在队列中的进程
   S 处于休眠状态
   T 停止或被追踪
   Z 僵尸进程
   W 进入内存交换(从内核2.6开始无效)
   X   死掉的进程

    < 高优先级
    n   低优先级
    s   包含子进程
    +   位于后台的进程组

linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

更新一个rpm版本可以使用rpm -Uvh ***.rpm --force --nodeps(可由高版本rpm变为低版本rpm) 或者rpm -Uvh ***.rpm --force --oldpackage

查看centos启动或重启日志
cat /var/log/boot.log

yum install nmap 
nmap localhost #查看主机当前开放的端口
nmap -PS 192.168.21.163 #探测目标主机开放的端口

软练级与硬链接区别:
https://www.cnblogs.com/crazylqy/p/5821105.html
硬链接(相当于指针),直接指向目录文件
软链接(相当于指向指向指针的指针),指向实际文件的文件名
软连接无法链接目录,软链接相当于生成了一个新的链接文件,而硬链接只是多了一个指向目录文件的指针

判断当前用户是否是root
id -u

只查看不解压文件
tar -tvf *.tar.gz

vim快捷键
/内容  //从上到下搜索
?内容  //从下到上搜索
n      //下一个
#      //下一个  
将vim的快捷键设置为四个空格
vim /etc/vimrc 
set ts=4
set expandtab
set autoindent
保存即可
TAB替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!

当前目录全局搜索某个字段
grep -r zjt .

删除一个磁盘
/sys/block/sdh/device/delete

更改shell命令
chsh -s /bin/bash

将PythonAPI 目录下所有文件(排除build dist .vscode __pycache__目录下文件)复制到远程主机usr下
rsync -av --exclude .svn/ --exclude build/ --exclude dist/ --exclude .vscode/ --exclude __pycache__
PythonAPI root@191.167.20.219:/usr/

根据进程查看cpu 内存
top -d 6 -c -p $(pgrep -d',' -f 进程名)
将数据输入到文件
top -b -n8 -c -p $(pgrep -d',' -f 进程名) >> ps.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值