记录一下平常会用到的Linux命令

记录一下平常会用到的Linux命令

防火墙开启关闭

Centos6.* :
       	临时关闭:service iptables stop
    	开机禁用:chkconfig iptables off 
    	查看:
    	    service iptables status
    	    chkconfig iptables -list
Centos7.* :
   		临时关闭:systemctl stop firewalld
    	开机禁用:systemctl disable firewalld
    	查看:firewall-cmd --state

查看版本号

cat /etc/issue

查看路由跳转

tracert ip

修改yum源

配置本地yum源:

    * 挂载ISO镜像到本地目录
        mount -o loop /xxxx.iso /xxxxx
    * 修改yum源配置文件xxxx.repo
        [base]
        name=CentOS
        baseurl=file:///此处的路径就是上面ISO挂载的本地目录路径
        enabled=1
        gpgcheck=0
    * 清楚缓存重新加载yum源
        yum clean all
        yum list

配置在线yum源:
    目的是配置此处一个yum源,相同网段内的所有机器均可使用此yum源.
    
    * 开启httpd服务
        yum install -y httpd
    * 将ISO镜像挂载到httpd目录下
        mount -o loop /xxxx.iso /var/www/html/files/xxx
    * 启动httpd服务
        service httpd start
    * 访问页面查看yum源时候配置成功
        ip/files
    * 成功显示之后,修改yum源的配置文件
        [CentOS7-base]
        name=CentOS-$releasever-base
        enable=1
        baseurl=http://ip/files/xxx
        gpgcheck=1
        # yum 源校验包
        gpgkey=http://ip/files/xxx/RPM-GPG-KEY-CentOS-7
    * 清楚缓存重新加载yum源
        yum clean all
        yum list 

一些常用的软件包:
    
    yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl* xz lzma xz-devel gdbm gdbm-devel tk tk-devel glib glib-devel glibc glibc-devel glibc-static gcc gcc-c++ numactl numactl-devel openssh* perl perl-devel gd gd-devel libaio* autoconf numactl libffi-devel libuuid-devel vim wget screen net-tools

创建软链接—> ln

ln –s /需要创建链接的目录 /新的位置/别名
rm –f /别名位置
详细参数补充:

    TODO:完善

KVM虚拟化操作—> virsh

virsh list --all    查看所有虚拟机
virsh start x       启动名字为x的非活动虚拟机v
virsh autostart x   宿主机开机以后虚拟机也自启动
virsh autostart --disable  X 与上面命令相反
virsh suspend x     暂停虚拟机
virsh resume x      启动暂停的虚拟机
virsh shutdown x    正常关闭虚拟机
virsh destroy x     强制关闭虚拟机
virsh dominfo x     显示虚拟机的基本信息
virsh dumpxml x     显示虚拟机的当前配置文件
virsh domblklist x  显示虚拟机硬盘列表
virsh setmem x y    给不活动虚拟机设置内存大小
virsh edit x        编辑配置文件(一般是在刚定义完虚拟机之后)

进程相关

查看某个进程:
    ps -ef | grep {name}
关闭某个进程:
    kill [-9] 进程端口号
    
查看java进程状态:
    jps
    参数:
        -m	输出主函数传入的参数
        -l	输出应用程序主类完整package名称或jar完整名称

会话—> screen

 screen 
        -ls		查看所有会话
        -S	xxx	创建
        -r	xxx	进入会话(-D强制进入)
        -x  xxx 共享会话

查看文件—>ls

ll  
    /proc/PID 	查看进程pid的信息:cwd符号链接的是进程运行目录,cmdline就是程序运行时输入的命令行命令
ls 
    -1 ./xxx		查看某个文件夹下的目录 一个文件为一行

系统用户相关操作

创建用户:
    useradd 选项 用户名
        -c comment 指定一段注释性描述。
        -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
        -g 用户组 指定用户所属的用户组。
        -G 用户组,用户组 指定用户所属的附加组。
        -s Shell文件 指定用户的登录Shell。
        -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
        
删除用户:
    userdel 选项 用户名 (一般使用-r  将他指定的主目录一起删除)
    
修改密码:
    passwd 选项 用户名
        -l 锁定口令,即禁用账号。
        -u 口令解锁。
        -d 使账号无口令。
        -f 强迫用户下次登录时修改口令。
        
    root用户可以修改任何用户的密码.

系统用户组相关操作

创建组:
    groupadd 选项 用户组
    选项略...
删除组:
    groupdel 用户组
用户切换组:
    ewgrp 组名

用户和用户组的关联操作

添加用户到组:
    usermod -G 组名  用户名         
    -----不建议使用这个------        
    #离开原来的用户组,直接添加进新组 (user1默认组会改变)
    usermod -a -G 组名  用户名    
    -----------建议这个---------        
    #不离开原来的用户组,直接添加进新组 (user1默认组不会该变)
    
查看用户所属的组使用命令:
     groups 用户名

权限修改

改变某个文件或目录的所有者
    chown (选项) 组:用户  /文件目录  
    chown -R hadoop:hadoop /ssss/ssss
        -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
        -f或--quite或——silent:不显示错误信息;
        -h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
        -R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
        -v或——version:显示指令执行过程;
用来改变文件或目录所属的用户组
    chgrp (选项) 组  /文件目录
        -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
        -f或--quiet或——silent:不显示错误信息;
        -h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
        -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
        -v或——verbose:显示指令执行过程;

跨服务器复制文件—>scp

scp file username@ip:filepath  (注意冒号)
    -v 和大多数linux命令中的-v意思一样,用来显示进度.可以用来查看连接,认证,或是配置错误.
  -C 使能压缩选项.
  -P 选择端口.注意-p已经被rcp使用.
  -4 强行使用IPV4地址.
  -6 强行使用IPV6地址.
    -r  遍历文件夹

同步命令 —> rsync

rsync [参数] file username@ip:filepath  (注意冒号)
    -v 显示
    -r 递归
    -l 软连接

统计文件—> wc

wc	
    -c 统计字节数。
    -l 统计行数。
    -m 统计字符数。这个标志不能与 -c 标志一起使用。
    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
    -L 打印最长行的长度。

内存信息—> free

free -h 
      -b  以Byte为单位显示内存使用情况。 
     -k  以KB为单位显示内存使用情况。 
     -m  以MB为单位显示内存使用情况。 
     -o  不显示缓冲区调节列。 
     -s<间隔秒数>  持续观察内存使用状况。 
     -t  显示内存总和列。 
     -V  显示版本信息。

磁盘信息

df  -*
    -a:列出所有的文件系统,包括系统特有的/proc等文件系统
    -k:以KB的容量显示各文件系统
    -m:以MB的容量显示各文件系统
    -h:以人们较易阅读的GB,MB,KB等格式自行显示
    -H:以M=1000K替代M=1024K的进位方式
    -T:连同该分区的文件系统名称(例如ext3)也列出
    -i:不用硬盘容量,而以inode的数量来显示
    
lsblk
    -a, --all            显示所有设备。
    -b, --bytes          以bytes方式显示设备大小。
    -d, --nodeps         不显示 slaves 或 holders。
    -D, --discard        print discard capabilities。
    -e, --exclude  排除设备 (default: RAM disks)。
    -f, --fs             显示文件系统信息。
    -h, --help           显示帮助信息。
    -i, --ascii          use ascii characters only。
    -m, --perms          显示权限信息。
    -l, --list           使用列表格式显示。
    -n, --noheadings     不显示标题。
    -o, --output   输出列。
    -P, --pairs          使用key="value"格式显示。
    -r, --raw            使用原始格式显示。
    -t, --topology       显示拓扑结构信息。

文件夹使用情况

du -*
    -a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
    -h : 以人们较易读的容量格式(G/M)显示;
    -s : 列出总量,而不列出每个个别的目录占用了容量;
    -S : 不包括子目录下的总计,与-s有点差别;
    -k : 以KB列出容量显示;
    -m : 以MB列出容量显示。

挂载—> mount

mount -*  /磁盘  /文件目录
    -V:显示程序版本
    -h:显示辅助讯息
    -v:显示较讯息,通常和 -f 用来除错。
    -a:将 /etc/fstab 中定义的所有档案系统挂上。
    -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
    -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
    -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
    -s-r:等于 -o ro
    -w:等于 -o rw
    -L:将含有特定标签的硬盘分割挂上。
    -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
    -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
 
注意:
    如果硬盘大小>2T;需要添加: -t ntfs-3g
    

要想硬盘实现开机自动挂载的话:
    修改文件: /etc/fstab文件 在里面添加挂载盘
    /盘符	/挂载目录		/文件系统类型		/挂载参数		/备份标记	/检测顺序

磁盘分区 —> fdisk

fdisk [-b <分区大小>][-uv][外围设备代号]
      -b<分区大小>   指定每个分区的大小。
      -l   列出指定的外围设备的分区表状况。
      -s<分区编号>   将指定的分区大小输出到标准输出上,单位为区块。
      -u   搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址。
      -v   显示版本信息。
      
注意:
    fdisk仅支持2T以下硬盘的分区,如果需要2T以上的请使用下面命令
    
parted:
    后续补充:
    https://www.cnblogs.com/onlybobby/p/7018788.html

磁盘格式化—> mkfs

这是格式化为ext4类型的:
    mkfs.ext4 /磁盘目录

查找文件位置

whereis * -b  只查找二进制文件。 
     -B<目录>  只在设置的目录下查找二进制文件。 
     -f  不显示文件名前的路径名称。 
     -m  只查找说明文件。 
     -M<目录>  只在设置的目录下查找说明文件。 
     -s  只查找原始代码文件。 
     -S<目录>  只在设置的目录下查找原始代码文件。 
     -u  查找不包含指定类型的文件。

find / -name {name}

这两个应该都可以,具体区别后续补充.

查找服务端口号

lsof -i	
    lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具
lsof -i:端口号
    用于查看某一端口的占用情况
netstat -tunlp
    用于显示tcp,udp的端口和进程等相关情况

压缩解压—> tar

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

下面的参数是根据需要在压缩或解压档案时可选的。
    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出
    -C: 解压到指定目录
    
下面的参数-f是必须的
    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
    
例如:
    tar -zxvf xxx.tar.gz
    tar -zcvf xxx.tar.gz /xxxx

在线下载—> wget

wget是一个下载文件的工具.
wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget [选项]... [URL]...
    -O:下载文件到对应目录,并且修改文件名称
    -b: 后台下载.
        使用此命令查看进度:tail -f wget-log
    -c: 开启断点续传

系统时区

查看:
    timedatectl
修改:
    timedatectl  set-timezone Asia/Shanghai

启动jar包

常用的启动命令是下面三种
    当需要指定外部依赖启动jar包的时候 需要下面两个命令,第一个是大批量依赖的时候,第二个是小量依赖。
        java -Djava.ext.dirs=./  后面跟的是main函数的package名,不是jar包名!!!
        java -cp ./xx.jar,./xx.jar 这个也是packagename,不是jarname
    这个是依赖直接打包完毕之后启动
        java -jar xxx.jar
    后台启动命令
        java ......... & 		当前会话内后台启动
        nohup java........& 	全局后台启动

rpm

安装rpm包:
    rpm -ivh ***.rpm {还可以追加参数} 
        #其中i表示安装,v表示显示安装过程,h表示显示进度
升级rpm包:
    rpm -Uvh ***.rpm
删除软件包:
    rpm -e PACKAGE_NAME
    rpm -e –nodeps PACKAGE_NAME    
        #不考虑依赖包
    rpm -e –allmatches PACKAGE_NAME    
        #删除所有跟PACKAGE_NAME匹配的所有版本的包
查询软件包:
    rpm -q PACKAGE_NAME
    rpm -qp ***.rpm 
        #获取当前目录下的rpm包相关信息
    rpm -qa | less 
        #列出所有已安装的软件包
    rpm -qf /usr/sbin/httpd 
        #查看某个文件属于哪个软件包,可以是普通文件或可执行文件,跟文件的绝对路径
    rpm -qi PACKAGE_NAME 
        #列出已安装的这个包的标准详细信息
    rpm -ql PACKAGE_NAME 
        #列出rpm包的文件内容
    rpm -q –scripts kernel | less 
        #列出已安装rpm包自带的安装前和安装后脚本
    rpm -qa –queryformat ‘Package %{NAME} was build on %{BUILDHOST}\n’ |less queryformat
        #强大的查询
    rpm –querytags | less
        #可以列出queryformat可以使用的所有变量从而组合成更强大的查询
通用参数:
    --oldpackage 允许"升级"到一个老版本 
    --test 只对安装进行测试,并不实际安装
    --force 即使覆盖属于其它包的文件也强迫安装 
    --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
    --percent 以百分比的形式输出安装的进度。 
    --excludedocs 不安装软件包中的文档文件 
    --includedocs 安装文档 
    --replacepkgs 强制重新安装已经安装的软件包 
    --replacefiles 替换属于其它软件包的文件 
    --noscripts 不运行预安装和后安装脚本 
    --prefix 将软件包安装到由 指定的路径下 
    --ignorearch 不校验软件包的结构 
    --ignoreos 不检查软件包运行的操作系统 
    --ftpproxy 用 作为 FTP代理 
    --ftpport 指定FTP的端口号为 

清空系统缓存

echo 3 > /proc/sys/vm/drop_caches

    echo 0 是不释放缓存
    echo 1 是释放页缓存
    ehco 2 是释放dentries和inodes缓存
    echo 3 是释放 1 和 2 中说道的的所有缓存

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理

语法:
    awk [options] 'script' var=value file(s)
    awk [options] -f scriptfile var=value file(s)
样例:
    awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
内置变量:
    - $n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 
    - $0 这个变量包含执行过程中当前行的文本内容。
    - $NF 一行中的最后一个字段
    - $NR 文中中的行数
外部变量赋值:
    - 借助 -v 参数:
        echo | awk -v VARIABLE=$JAVA_HOME '{ print VARIABLE }'
    - 赋值
        echo | awk '{ print v1,v2 }' v1=$JAVA_HOME v2=$SCALA_HOME

定时任务 --> crontab

语法:
    crontab [options]
参数:
    -e : 编辑定时任务
    -l : 查看当前的定时任务
    -r : 删除定时任务
编辑:
    * * * * * 执行的任务
    1 : 一小时中的哪分钟
    2 : 一天中的哪个小时
    3 : 一月中的哪一天
    4 : 一年中的哪个月
    5 : 一周中的星期几
符号:
    * : 任意一个
    , : 每一个
    - : 连续一段
    */n : 间隔多久
例如:
    每小时执行/etc/cron.hourly目录内的脚本
        01 * * * * root run-parts /etc/cron.hourly

ethtools 查看网卡信息

描述:Ethtool是用于查询及设置网卡参数的命令。

语法:
    ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX

    ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
    
    ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] 
                 [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] 
                 [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N]
                 [pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] 
                 [tx-frames-low N] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] 
                 [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
    
    ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
    
    ethtool [-e] ethX [raw on|off] [offset N] [length N]
    
    ethtool [-E] ethX [magic N] [offset N] [value N]
    
    ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
    
    ethtool [-p] ethX [N]
    
    ethtool [-t] ethX [offline|online]
    
    ethtool [-s] ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] 
                 [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
    
    [wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]

输出说明:
    [root@localhost ~]# ethtool eth0
    Settings for eth0:
    Supported ports: [ TP ]
    
    // 支持模式
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes // 支持自动协商
    Supported FEC modes: Not reported
    
    // 通告模式
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes // 使用自动协商
    Advertised FEC modes: Not reported
    
    Speed: 1000Mb/s // 当前速率 1000Mb/s
    Duplex: Full // 工作模式为全双工
    
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    
    Auto-negotiation: on // 自动协商打开
    
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    drv probe link
    Link detected: yes

bond 多网卡合一

描述:网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。
模式:常用的是0/1/6
    Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
    Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
    Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
    Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合 。
    Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
    Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
    Mode=6(balance-alb) 在5的tlb基础上增加了rlb。
使用:
    命令行生成模式:
        生成主bond卡:nmcli con add type bond ifname bond0 mode {上面的7种模式的代表单词,例如:balance-rr}
        配置哪几张网卡参与bond: nmcli con add type bond-slave ifname {需要配置的网卡名称} master bond0 
        有几张配置几张即可。

raid配置

PS参数

修改shell显示内容

top / uptime

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

第一行,任务队列信息,同 uptime 命令的执行结果

    系统时间:19:27:01
    运行时间:up 54 min,
    当前登录用户:  1 user
    负载均衡(uptime)  load average: 0.02, 0.03, 0.00
        average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

    总进程:159 total, 运行:1 running, 休眠:157 sleeping, 停止: 1 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

    0.0%us【user space】— 用户空间占用CPU的百分比。
    0.1%sy【sysctl】— 内核空间占用CPU的百分比。
    0.0%ni【】— 改变过优先级的进程占用CPU的百分比
    99.9%id【idolt】— 空闲CPU百分比
    0.0%wa【wait】— IO等待占用CPU的百分比
    0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
    0.0%si【Software Interrupts】— 软中断占用CPU的百分比
    
第四行,内存状态

    1012288k total,   234464k used,   777824k free,    24084k buffers【缓存的内存量】

第五行,swap交换分区信息

    614396k total,        0k used,   614396k free,    72356k cached【缓冲的交换区总量】

第六行,空行
第七行以下:各进程(任务)的状态监控

    PID — 进程id
    USER — 进程所有者
    PR — 进程优先级
    NI — nice值。负值表示高优先级,正值表示低优先级
    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR — 共享内存大小,单位kb
    S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU — 上次更新到现在的CPU时间占用百分比
    %MEM — 进程使用的物理内存百分比
    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    COMMAND — 进程名称(命令名/命令行)
    
    

你可能感兴趣的:(Linux,linux,shell,运维)