linux常用命令

Posted by linhuanjie on 2019-05-17
  • 查看linux版本:

    • lsb_release -a
    • cat /etc/issue
    • cat /etc/redhat-release (只适合Redhat系的Linux)
  • 查看Linux内核版本:uname -a

  • 查看Linux系统位数:file /sbin/init

  • centos6关闭防火墙

    • service iptables status –查看防火墙状态
    • servcie iptables stop –临时关闭防火墙
    • chkconfig iptables off –永久关闭防火墙
    • chkconfig –list iptables –查看防火墙状态
  • 查看SSH是否安装:rpm -qa | grep ssh

    • 注:若没安装SSH则可输入:yum install openssh-server 安装。
  • 查看SSH服务是否正在运行:/etc/init.d/sshd status

  • ssh免密码登录:
    • ssh-keygen -t rsa //一路回车就好
    • ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.62.128
  • 查看端口使用情况:
    • sudo netstat -anp | grep 8080
      • lsof -i:8080
  • 授权限: chmod -R 777 /xxx

  • 切换账号:su xx

  • 分配权限给子用户:sudo

  • 复制、移动与删除:cp,mv,rm (rm -rf aa.txt)
  • 挂载(卸载):mount(unmount)

  • 解压:

    • tar -zxvf file.tar.gz
    • -z 通过gzip指令处理备份文件
    • -x 从备份文件中还原文件
    • -v 显示指令执行过程
    • -f 指定备份文件
  • 系统服务管理:

    • service –status-all
    • service sshd status
    • service sshd stop
    • service sshd start
    • service sshd restart
  • 开机自启:

    • chkconfig httpd on ##让httpd服务开机自启
    • chkconfig httpd off ##让httpd服务开机不要自启
  • shell中的特殊变量:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $0 shell或shell脚本的名字 

    $* 以一对双引号给出参数列表

    $@ 将各个参数分别加双引号返回

    $# 参数的个数

    $_ 代表上一个命令的最后一个参数

    $$ 代表所在命令的PID

    $! 代表最后执行的后台命令的PID

    $?代表上一个命令执行后的退出状态
  • 查看磁盘空间使用情况:df -h

  • 统计文件大小:du -sh (-s表示汇总,-h表示人性化显示)

    • du -sh *|grep [MG]|sort -nr  [筛选出大小为MB和GB级别的目录和文件,并降序排序]
  • 查看网络状态: netstat -lntup

  • 查看进程: ps -ef | grep xxx

  • 跨服务器复制:

    • scp xxx.tar.gz hostname: /xxx/xxx(scp 文件名 服务器ming/ip地址 复制到该服务器的路径)
  • 集群ssh无密匙登录: ssh-keygen -t rsa

  • 修改hostname:  vim /etc/sysconfig/network

  • 修改hosts: vim /etc/hosts

  • find:

    1
    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

    -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

    -amin n : 在过去 n 分钟内被读取过

    -anewer file : 比文件 file 更晚被读取过的文件

    -atime n : 在过去n天内被读取过的文件

    -cmin n : 在过去 n 分钟内被修改过

    -cnewer file :比文件 file 更新的文件

    -ctime n : 在过去n天内被修改过的文件

    -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

    -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

    -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

    -type c : 文件类型是 c 的文件。

    d: 目录

    c: 字型装置文件

    b: 区块装置文件

    p: 具名贮列

    f: 一般文件

    l: 符号连结

    s: socket

    -pid n : process id 是 n 的文件

    你可以使用 ( ) 将运算式分隔,并使用下列运算。

    exp1 -and exp2

    ! expr

    -not expr

    exp1 -or exp2

    exp1, exp2

举个栗子:

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

1
# find . -name "*.c"

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

1
# find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

1
# find /var/log -type f -mtime +7 -ok rm {} \;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

1
# find . -type f -perm 644 -exec ls -l {} \;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

1
# find / -type f -size 0 -exec ls -l {} \;
  • 管道查询:grep