Linux-常用命令

目录
  • 前言
  • alias / unalias 命令别名
  • cd 切换目录
  • cp 复制文件或目录
  • cat 查看文件内容
  • chage 设置密码有效期
  • chown 更改文件所属
  • chmod 设置文件权限
  • chattr / lsattr 隐藏属性
  • crontab 定时任务
  • df 磁盘使用情况
  • date 系统时间 / hwclock 硬件时钟
  • diff 文件比较
  • echo 标准输出
  • free 查看内存使用
  • head 查看文件前面的内容
  • history 命令历史
  • ip 网络配置管理
  • kill 结束进程
  • ln 创建链接(快捷方式)
  • ls 查看目录中的内容
  • mv 剪切|重命名 文件或目录
  • mkdir 创建目录
  • ps 查看进程
  • pwd 显示当前目录
  • passwd 修改密码
  • rm 删除文件或目录
  • su 切换用户
  • sort 排序
  • split 分割文件
  • tar 打包
  • top 动态进程,任务管理器
  • tail 查看文件末尾内容
  • useradd/groupadd 用户和组管理
  • wc 统计字数行数
  • xargs 参数传递
  • zip / unzip 压缩与解压

前言

  • 以下命令测试环境为CentOS7.8
  • 使用的shell为系统默认的bash
  • Linux下是区分大小写的,这点和Windows不同
  • Linux大部分命令语法为命令 [选项] [参数],我所介绍的选项为常用选项并不包含全部

alias / unalias 命令别名

alias命令用于给指令设置一个别名,unalias命令用于取消设置

  • 可以给长命令起一个简单的别名便于使用,如:

    alias ens33="vi /etc/sysconfig/network-scripts/ifcfg-ens33"
    
  • 取消已设置的别名命令

    unalias ens33
    
  • 可以避免危险操作,如系统默认的命令rm mv cp等,都是通过alias加了-i参数的

    # 查看所有的使用别名的命令
    [root@God ~]# alias  
    alias cp='cp -i'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    
  • 在命令前加\或者使用命令全路径可忽略使用别名

    # 不进行询问直接删除mail.log文件
    \rm /var/log/mail.log  
    或
    /usr/bin/rm  /var/log/mail.log
    
  • 在命令行通过aliasunalias设置或取消的别名都是暂时性的,仅作用于当前登录的会话。如果想要永久生效,可以在~/.bashrc文件添加别名设置

cd 切换目录

cd命令用于切换工作目录至指定的目录,可用相对路径和绝对路径

  • 选项

    • / 表示根目录
    • . 表示当前目录
    • .. 表示上一级目录
    • - 表示上次所在的目录
    • ~ 表示当前用户的家目录
    # 进入用户家目录
    cd ~
    
    # 进入指定目录
    cd /etc
    
    # 进入上两级目录
    cd ../..
    

cp 复制文件或目录

cp用来复制文件或目录到指定位置

  • 语法

    cp [选项] 源 目标
    
  • 选项

    • -a 相当于同时指定-dpr
    • -d 复制时保留链接(相当于Windows系统中的快捷方式)
    • -p 保留源文件或目录的属性
    • -r|R 对目录进行递归处理,复制目录时必须加上它才能复制
    • -f 覆盖已存在的目标而不给出提示
    • -i-f相反,如果目标文件存在,则提示是否覆盖
    # 复制文件/etc/hosts到目录/local下
    cp /etc/hosts /local
    
    # 复制文件/etc/hosts到目录/local下并命名为hosts.bak
    cp /etc/hosts /local/hosts.bak
    
    # 复制目录/etc到目录/local下,如果/local/etc已存在直接覆盖
    cp -af /etc /local
    
    # 复制目录/etc到目录/local下并重命名为etc.bak
    cp -a /etc /local/etc.bak
    

cat 查看文件内容

cat命令适合查看少量内容,并可将多个文件连接到一起进行标准输出,当文本数据内容量过大时,推荐使用lessmore进行查看

  • 语法

    cat [选项] 文件1 [文件2 文件N]
    
  • 选项

    • -n 输出时显示行号
    • -s 当遇到有连续两行以上的空白行,就替换成一个空白行
    # 查看resolv.conf的内容
    cat /etc/resolv.conf
    
    # 将/etc/resolv.conf和/etc/hosts两个文件连接到一起进行标准输出,并显示行号
    cat -n /etc/resolv.conf  /etc/hosts
    
  • cat还可以配合重定向将标准输入写到文件中

    [root@God ~]# cat > demo.txt << EOF
    > 我在命令行打上 cat > demo.txt << EOF
    > 在 > 后面写的东西都能写入到文件中
    > 写完了所有内容后,在最后单独写个EOF就可以了
    > EOF
    [root@God ~]# cat -n demo.txt 
         1	我在命令行打上 cat > demo.txt << EOF
         2	在 > 后面写的东西都能写入到文件中
         3	写完了所有内容后,在最后单独写个EOF就可以了
    

chage 设置密码有效期

chage 命令本质是修改通过/etc/shadow文件中的内容来设置账号密码有效期限的

  • 语法

    chage [选项] 用户
    
  • 选项

    • -l 列出用户的当前设置
    • -d DATE DATE为日期,格式YYYY-MM-DD,即设置上次修改密码的时间,设置为0则下次登录时必须改密码,设置为-1则密码永不过期,密码是否过期就是根据这个时间计算的
    • -E DATE DATE为日期,格式YYYY-MM-DD,设置账号失效日期(对root慎用),设置为0则立即失效,设置为-1则永不失效
    • -M N N为天数,密码有效期,即每过N天不修改密码的话密码就会过期
    • -m N N为天数,即距离上次修改日期N天后,才可以更改密码,设置为0表示随时可更改
    • -W N N为天数,即距离密码过期日N天前开始发出警告信息
    • -I N N为天数,即如果一个密码已过期N天,那么该账号将失效
    # 列出 jet 用户的账号密码有效日期详细信息
    chage -l jet
    
    # 使 jet 用户下次登陆时必须修改密码
    chage -d 0 jet
    
    # 设置 jet 用户2020年8月8日账号失效
    chage -E '2020-8-8' jet
    
    # 设置用户至少每90天就需要改一次密码,并在15天之前提醒
    chage -M 90 -W 15 jet
    

chown 更改文件所属

chown命令可以更改Linux下文件或目录的所属用户、所属组,Linux下一切皆文件,而文件必须有所属

  • 语法

    chown [用户][:用户组] 文件或目录              
    
  • 选项

    • -R 递归处理,将指定目录下所有文件及子目录一并处理
    • -v 显示执行过程
    # 更改/local/myfile.txt的拥有者为root用户
    chown root /local/myfile.txt
    
    # 更改/local/myfile.txt的群组的使用者为root组
    chown :root /local/myfile.txt
    
    # 更改/local/myfile.txt的拥有者为root用户,群组的使用者为root组
    chown root:root /local/myfile.txt
    
    # 更改目录/local的拥有者为root用户
    chown -R root /local
    

chmod 设置文件权限

chmod命令可用于更改文件的r读、w写、x执行权限, 通过ls -lstat命令可查看文件的权限-rw-r--r-- 第一位表示文件类型,后9位每三位为一组,分别表示所属用户、所属组、其他用户的权限。

  • 语法

    chmod [选项] rwx的权限分值 文件或目录
    
    • 权限分值 r=4, w=2, x=1
    chmod [选项] 身份标识(+|-)(r|w|x) 文件或目录
    
    • 身份标识 u=user所属用户 , g=group所属组, o=other其他用户, a=all(u+g+o)所有用户
  • 选项

    • -R 递归处理,将指定目录下所有文件及子目录一并处理
    # 更改文件/local/myscript.sh的权限
    # 文件拥有者权限=7(r+w+x) 同组用户权限=5(r+x) 其他用户权限=5(r+x)
    chmod 755 /local/myscript.sh
    
    # 去掉其他用户对文件/local/myscript.sh的写权限
    chmod o-w /local/myscript.sh
    
    # 去掉其他用户对文件/local/myscript.sh的写权限,给同组用户加上执行权限
    chmod o-w,g+x /local/myscript.sh
    
    # 更改目录/local的权限
    chmod -R 754 /local
    
  • 删除文件、修改文件名的权限是受父目录的w权限控制的,和文件自身的权限无关

  • 对于可执行权限,普通用户还需要同时具备 r 权限才可以执行,root用户只需有 x 权限就可以执行

chattr / lsattr 隐藏属性

chattr命令可以用来修改文件或目录的隐藏属性,只有root用户可以使用

  • 语法

    chattr [选项] (+|-|=)属性 文件或目录
    
    • + 表示增加该属性
    • - 表示去掉该属性
    • = 表示去掉其他属性,只保留该属性
  • 选项

    • -R 递归处理,将指定目录下所有文件及子目录一并处理
  • 属性

    • a 设置后只能增加数据,而不能删除或修改数据
    • i 设置后不能被删除、改名、设定链接也无法新增,相当于锁定
    • s 彻底删除的属性,即有该属性的文件删除后无法恢复
    • u 当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复,预防意外删除
    # 给test.txt文件添加a属性,使其只能增加数据
    chattr +a /local/test.txt
    
    # 去掉改属性
    chattr -a /local/test.txt
    

lsattr 命令可以查看隐藏属性

  • 语法

    lsattr [选项] [文件或目录]
    
  • 选项

    • -a 显示隐藏文件
    • -d 显示目录的属性,而不是目录中内容
    # 查看test.txt文件的隐藏属性
    lsattr /local/test.txt
    
    # 查看/local目录的隐藏属性
    lsattr -d /local
    
    # 查看当前目录下的文件或目录的隐藏属性,包含吟唱文件
    lsattr -a
    

crontab 定时任务

crontab命令用来管理需要周期性执行的任务,与Windows下的计划任务类似,依赖于crond服务执行,定时任务的配置文件一般以用户为单位,放在/var/spool/cron目录中,执行日志是/var/log/croncrontab通过cron 表达式来进行定时任务的配置

  • 避免资源分配不均匀,即多个定时任务在同一时间点执行时,尽量错开
  • 取消不要的输出选项,将执行结果 >> /dev/null中,避免一直发邮件
  • 一般情况下周与日、月不可同时共存
  • anacron是可唤醒关机期间的工作任务的配置,有检测机制,针对不24小时开机的服务器,需要的自行百度
# cron表达式 分时日月周:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
# *    代表任何时刻
# ,    代表分隔时段
# -    代表时间范围
# /N   N为数字,表示执行几次
  • crontab 常用命令

    # 显示当前用户crontab配置
    crontab -l
    
    # 编辑当前用户crontab配置
    crontab -e
    
    # root用户可以帮其他用户新建/删除crontab配置
    crontab -u guest
    
  • crontab 配置示例

    # 每1分钟执行一次
    * * * * * echo $(date) >> /dev/null
    
    # 每5分钟执行一次后面的命令
    */5 * * * * echo $(date) >> /local/my_crontab.txt
    
    # 每2小时执行一次后面的命令
    * */2 * * * echo $(date) >> /local/my_crontab.txt
    
    # 在3:00与10:00的时候执行一次
    * 3,10 * * * echo $(date) >> /local/my_crontab.txt
    
    # 在10:00到22:00之间每2小时执行一次
    * 10-22/2 * * * echo $(date) >> /local/my_crontab.txt
    
    # 在21:00到21:30之间每5分钟执行一次
    0-30/5 21 * * * echo $(date) >> /local/my_crontab.txt
    
    # 每周一0点执行一次
    0 0 * * 1 echo $(date) >> /local/my_crontab.txt
    
    # 每年的5月20日00:00分都会给rose发一封情书邮件
    0 0 20 5 * mail rose < /home/jack/lover.txt
    

df 磁盘使用情况

df命令用于显示文件系统的磁盘使用信息

  • 语法

    df [选项] 
    
  • 选项

    • -h 以人类可读的格式显示(K|M|G)
    • -i 显示inode文件的数量和使用量
    • -T 显示磁盘的文件系统类型
    # 显示磁盘使用情况
    df -h
    # 显示inode信息
    df -hi
    

date 系统时间 / hwclock 硬件时钟

linux系统有两个时钟:一个是由主板电池驱动的硬件时钟(Real Time Clock),也叫做RTC或者叫CMOS时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的;另一个时间是系统时钟(System clock)也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读取RTC时间来进行时间同步。并且在系统关机的时候将系统时间写回RTC中进行同步。

date 命令比较常用,可以用来显示和设定系统的日期和时间,在显示方面还可以自定义格式

  • 语法

    date [+格式] [选项]
    
  • 格式

    • %Y 年 {0000..9999}
    • %m 月 {1..12}
    • %d 日 {01..31}
    • %H 时 {00..23}
    • %M 分 {00..59}
    • %S 秒 {00..59}
    • %N 纳秒 {000000000..999999999}
    • %u 星期 {1..7}
    • %j 一年的第多少天 {001..366}
    • %F 完整的日期,相当于 %Y-%m-%d
    • %T 完整的时间,相当于 %H:%M:%S
    • %R 钟表上显示的时间, 相当于 %H:%M
    • %s 从1970-01-01 00:00:00 UTC 到现在的秒数
    # 格式化显示当前系统时间
    [root@God ~]# date "+%F %T.%N"
    2020-06-22 20:34:36.179451922
    
    # 显示今天是今年的第多少天
    [root@God ~]# date "+%j"
    174
    
    # 设置系统时间为2012-12-12 12:12:12
    [root@God ~]# date -s "2012-12-12 12:12:12"
    Wed Dec 12 12:12:12 CST 2012
    [root@God ~]# date
    Wed Dec 12 12:12:12 CST 2012
    
  • 选项

    • -d DATESTR 该选项非常强大,可以根据DATESTR的描述显示时间
    • -s DATESTR 根据DATESTR的描述,设置系统时间,把-d换成-s即可
    # 年year 月month 日day 时hour 分min 秒seconds 
    
    # 显示1天前的时间
    date -d "-1day"
    
    # 显示100天后的时间
    date "+%F %T" -d "+100day"
    
    # 显示新中国成立100周年是哪天
    date "+%F" -d "1949-10-01 +100year"
    # 设置日期为新中国成立100周年那天
    date "+%F" -s "1949-10-01 +100year"
    
  • 硬件时钟hwclock的常用命令

    # 显示硬件时钟时间
    hwclock
    
    # 将当前系统时间写入硬件时钟
    hwclock -w
    
    # 以系统时钟为准,同步硬件时钟
    hwclock --systohc
    
    # 以硬件时钟为准,同步系统时钟
    hwclock --hctosys
    
    # 将硬件时钟设置成指定的时间
    hwclock --set --date="2008-08-08 08:08:08"
    
  • 使用ntpdate命令将本机时间与时间服务器的时间进行同步,没有这个命令使用yum install ntpdate安装

    # 将本机时间与阿里云时间服务器时间进行同步 ntp[1-7].aliyun.com
    ntpdate ntp7.aliyun.com
    

diff 文件比较

diff命令可以快速比较两个文件或目录是否有不同

  • 语法

    # 比较文件
    diff [选项] 文件1 文件2
    # 比较目录
    diff [选项] 目录1 目录2
    
  • 选项

    • -b 忽略一行当中仅有多个空白的区别(例如"about me"与"about me"视为相同)
    • -B 忽略空白行的区别
    • -i 忽略大小写的区别
    # 比较两个文件
    diff /etc/hosts /etc/hosts.bak
    

echo 标准输出

echo命令用于打印字符串或变量的值,在shell脚本中极为常用,可以做出进度条效果,也可以打印彩色文字,详情自行百度

  • 选项

    • -e 开启转义字符
    # 转义:开启与不开启的区别
    [root@God test]# echo "Hello \n World"
    Hello \n World
    [root@God test]# echo -e "Hello \n World"
    Hello 
     World
     
    # echo 单引号与双引号的区别
    [root@God test]# echo "$PATH"
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@God test]# echo '$PATH'
    $PATH
    
    [root@God test]# echo "Hello,World!"
    -bash: !": event not found
    [root@God test]# echo 'Hello,World!'
    Hello,World!
    

free 查看内存使用

free命令可以显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存

  • 语法

    free [选项]
    
  • 选项

    • -k 以KB为单位进行显示
    • -m 以MB为单位进行显示
    • -g 以GB为单位进行显示
    • -h 以人类可读的格式显示(K|M|G)
    • -s N N为数字,表示间隔描述,用于持续观察内存使用状况
    # 3秒一刷新,显示内存使用情况
    free -h -s 3
    

head 查看文件前面的内容

head命令用于查看文件头部或行内头部的内容

  • 语法

    head [选项] 文件
    
  • 选项

    • -n N N为数字,表示前N行
    • -c N N为数字,表示行内的前N个字节。UTF-8编码中一个字母占1字节,一个汉字占3字节
# 显示前100行内容
head -n 100 /local/

# 显示前5个字节的内容
echo "Hello,World" | head -c 5

history 命令历史

history 命令用于记录和显示你在命令行敲过的每一条命令,相邻的重复命令默认会合并成一个。命令历史记录太多会让系统变得不安全,可以根据自己的需求自定义以下环境变量进行限制

# 记录命令历史的文件
HISTFILE=/root/.bash_history
# 记录命令历史的文件最大记录条数
HISTFILESIZE=1000
# 内存中命令历史的最大记录条数
HISTSIZE=1000
# 可以通过添加HISTTIMEFORMAT环境变量,记录命令执行时间
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
  • 语法

    history [选项] 
    
  • 选项

    • N N为数字,显示最近执行过的N条命令
    • -c 清空内存中的历史命令
    • -rHISTFILE设置的文件中的内容读取到内存
    • -w-r相反,把内存中的命令历史写入到文件中
    # 查看命令历史
    history
    
    # 执行第66条命令
    !66
    
    # 执行上一条命令
    !!
    

ip 网络配置管理

ip命令作为iproute2工具包的核心命令,它是linux下管理网络和流量控制的工具包,旨在替代老牌的工具链net-tools,即ifconfig, arp, route, netstat等命令。net-tools通过procfs(/proc)ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言,net-tools的用法给人的感觉是比较乱,而iproute2的用户接口相对net-tools来说相对来说,更加直观。比如,各种网络资源(如link、IP地址、路由和隧道等)均使用合适的对象抽象去定义,使得用户可使用一致的语法去管理不同的对象。如今很多系统管理员依然通过net-tools配置管理网络,但自2001年起,Linux社区已经对齐停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。如果你仍在使用net-tools,而且尤其需要跟上新版Linux内核中的最新最重要的网络特性的话,那么是时候转到iproute2的阵营了。原因就在于使用iproute2可以做很多net-tools无法做到的事情。ip命令非常强大,如果要完全运用的话估计能写一本书了。这里就随用随加了,需要深入自行查阅官方文档。

  • 语法

    ip [选项] 对象 {命令}
    
    • ip 命令的选项不支持连着写,每个都要加-并用空格分隔
  • 选项

    • -c 加上颜色显示
    • -s 显示更多的信息
  • 对象

    • address IP协议设备
    • link 网络设备
    • route 路由表
    • 所有对象的名称均支持完整写法和缩写,如address可写成addr add a
    # 查看IP地址
    ip -c addr
    

kill 结束进程

kill命令可以发送一个信号SIGTERM默认为15给进程,可将指定程序终止。程序或工作的编号可以利用ps命令和jobs命令查看

  • 语法

    kill -信号  进程ID|工作ID
    
  • 信号

    • 1 启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动
    • 2 相当于用键盘Ctrl+c来中断一个进程的进行
    • 9 强制中断一个进程的执行,如果该进程进行到一半,那么尚未完成的部分可能会有"半产品"产生,比如vim会有.filename.swp保留下来
    • 15 以正常的进程结束方式来结束进程
    • 17 相当于用键盘Ctrl+z来暂停一个进程的进行
    # 强制结束PID为8886的进程
    kill -9 8886
    
    # 强制结束JOBNUMBER为2的进程
    kill -9 %2
    
    # 强制结束所有的以httpd启动的进程
    killall -9 httpd
    

ln 创建链接(快捷方式)

ln 命令可以为文件或目录创建一个链接(link),链接可分为两种:硬链接和软链接。软链接相当于windows下的快捷方式

  • 语法

    ln [选项] 源  目标
    
  • 选项

    • -s 创建为软链接
    # 在家目录下创建一软连接
    ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ~/ifcfg-ens33
    

ls 查看目录中的内容

ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。ll命令是系统自带的一个别名命令,主要用于进行长列表显示内容

  • 语法

    ls [选项] [文件或目录]
    
  • 选项

    • -a 显示所有内容,包括隐藏文件
    • -d 显示目录本身,而不是目录中的内容
    • -t 按照时间进行排序,最新的在最上面
    • -r 对排序进行翻转
    • -l 使用长列表显示内容
    • -h 以人类可读的格式显示(K|M|G)
    • --full-time 显示精确时间
    # 显示目录下的所有内容
    ls -a 
    
    # 快速找到修改时间最新的文件,最下面那个就是
    ls -lrth
    

mv 剪切|重命名 文件或目录

mv命令用来为文件或目录改名或移动文件或目录(剪切)

  • 语法

    mv [选项] 源 目标
    
  • 选项

    • -i 若指定目录已有同名文件,则先询问是否覆盖旧文件;
    • -f 如果目标存在,直接覆盖不提示
    # 移动文件/local/hosts.bak到/local目录下
    mv /etc/hosts.bak /local
    
    # 重命名文件hosts.bak为hosts
    mv /etc/hosts.bak /etc/hosts
    

mkdir 创建目录

mkdir命令用来创建目录

  • 语法

    mkdir [选项] 目录
    
  • 选项

    • -m 创建目录的同时设置权限
    • -p 如果父目录不存在,则创建
    # 创建目录/local/script,如果目录/local不存在,会报错
    mkdir /local/script
    
    # 创建目录/local/script,如果目录/local不存在,则创建
    mkdir -p /local/script
    
    # 创建目录/local/script,如果目录/local不存在,则创建,并给script目录设定755的权限分数
    mkdir -pm 755 /local/script
    

ps 查看进程

ps命令用于显示当前进程的状态,这个状态是当前那些进程的快照,如果想要动态查看进程,请使用top命令,常用来通过管道命令搭配grep命令进行查询,然后通过kill命令,删除不需要的进程

  • 语法

    ps [选项]
    
  • 选项

    • -e 显示所有进程
    • -f 显示全格式列表,增加 UID、PPID、C与STIME栏位的显示
    # 根据关键字查找进程
    ps -ef | grep tomcat
    

pwd 显示当前目录

pwd用于显示当前所在的路径,加-P可显示真实路径,而非链接路径

[root@God /]# ll -d /sbin
lrwxrwxrwx. 1 root root 8 Jun 21 11:20 /sbin -> usr/sbin
[root@God /]# cd sbin/
[root@God sbin]# pwd    
/sbin
[root@God sbin]# pwd -P  
/usr/sbin

passwd 修改密码

passwd可以用来更改用户的密码,还可以锁定与解锁用户

  • 语法

    passwd [选项] 用户
    
  • 选项

    • -d 删除密码
    • -f 强迫用户下次登录时必须修改密码
    • -w 设置密码到期前提前警告的天数
    • -l 锁定账户
    • -u 解锁账户
    • -x 设置密码有效天数
    # 修改当前用户的密码
    passwd
    
    # 修改其他用户的密码,root用户修改其他用户密码,不需要提供原密码
    passwd jack
    
    # 锁定用户
    passwd -l jack
    
    # 解锁锁定的用户
    passwd -u jack
    

rm 删除文件或目录

rm 用于删除文件或目录,生产服务器执行删除命令前一定要备份

  • 语法

    rm [选项] 文件或目录
    
  • 选项

    • -i 删除前询问
    • -f 直接删除,不确认
    • -r 删除目录时使用,否则无法删除目录
    # 删除目录下所有内容,并且不经过确认,慎用
    rm -rf /local
    
    # rmdir 只能删除空目录,目录不为空无法删除
    rmdir /local
    

su 切换用户

su命令用于切换当前用户,除了root外,需要输入该用户的密码

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下susu -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。

# 切换到用户执行命令,命令执行完在自动切换回来
[root@God ~]# su jet -c ls
ls: cannot open directory .: Permission denied
[root@God ~]# su - jet -c ls
1.txt

sort 排序

sort命令用于对文本内容或者是对其他命令的输出进行排序显示

  • 语法

    sort [选项] 文件
    
  • 选项

    • -u 合并重复的行
    • -r 反向排序
    • -g 按照数字大小排序
    • -t SEP 按照SEP进行分列,默认为空格
    • -k N N为数字,表示根据第N列排序
    # 根据进程号排序查看进程
    ps -ef | sort -rgk 2
    

split 分割文件

split可以将大文件分割成若干个小文件

  • 语法

    split [选项] 文件 前缀
    
  • 选项

    • -d 给文件添加数字后缀
    • -b SIZE 根据大小进行分割,可以添加单位(b|k|m|g)等
    • -l N N为数字表示行数,按照行数进行分割
    # 将catalina.out按照300m的大小进行分割,分割的文件会以catalog00,catalog01,catalog02的方式来建立
    split -db 300m catalina.out catalog
    
    # 将分割后的若干个小文件在还原
    more catalog* >> catalina.out
    

tar 打包

tar 命令用来打包或压缩文件,选项相当多。一般只打包不压缩的文件以.tar结尾,通过gzip进行打包压缩的文件以.tar.gz结尾,通过bzip2进行打包压缩的文件以.tar.bz2 结尾

  • 语法

    tar [选项] 压缩文件名 操作目标
    
  • 选项

    • -c 创建打包文件
    • -x 释放打包文件
    • -t 查看包文件内容
    • -v 显示详细过程
    • -z 使用gzip的方式进行压缩或解压
    • -j 使用bzip2的方式进行压缩或解压
    • -h 同时打包链接指向的文件
    • -C 指定解压目录
    # 将目录/local进行打包并使用gzip进行压缩
    tar -zcvf local.tar.gz /local
    
    # 将local.tar.gz进行解压并将打包文件释放到当前目录
    tar -zxvf local.tar.gz
    
    # 仅解压指定的档案local/script到当前工作目录
    tar -zxvf local.tar.gz local/script
    
    # 将目录/local进行打包并使用gzip进行压缩,但排除以.log结尾的文件
    tar -zcvf local.tar.gz --exclude=*.log /local
    

top 动态进程,任务管理器

top命令可以实时的查看系统运行的整体情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。

  • 语法

    top [选项]
    
  • 选项

    • -d N N为数字,表示刷新秒数间隔
    • -b 以追加的方式显示结果
    • -n N N为数字,表示刷新次数
    • -p PIDLIST 只显示指定PID的进程,多个PID之间用,分隔
    • -u USER 只显示指定用户的进程
    # 以1秒的时间间隔来动态查看进程
    top -d 1
    
    # 查看进程ID为 1 12 38 的进程信息
    top -d 1 -p 1,12,38
    

tail 查看文件末尾内容

tail 命令和head命令相反,用于查看文件末尾的内容,而且可以实时刷新

  • 语法

    tail [选项] 文件
    
  • 选项

    • -n N N为数字,表示末尾N行
    • -c N N为数字,表示行内的末尾的N个字节。UTF-8编码中一个字母占1字节,一个汉字占3字节
    • -f 实时刷新显示文件内容
    # 实时查看文件/local/mylog.log末尾100行的内容
    tail -100f  /local/mylog.log
    

useradd/groupadd 用户和组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的密码。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的家目录。

  • 添加用户

    # 添加一个普通用户,不指定组的话会自动创建一个同名组
    useradd jack 
    
    # 添加一个普通用户,并指定现有的组(组必须先存在)
    useradd -g root jet
    
    # 添加一个系统用户,并不让其登录 -r 代表系统用户,系统用户不会有家目录
    useradd -r -s /sbin/nologin  rose 
    
  • 删除用户

    # 只删除用户
    userdel jack
    
    # 删除用户,并删除该用户的家目录(包括目录中的内容)
    # 家目录外的用户所属文件会替换成用户ID,当有新的用户使用这个ID时,该文件自动归属新用户
    userdel -r jack
    
  • 修改用户

    # 修改用户的初始用户组,通过名称修改
    usermod -g root jack
    
    # 修改用户的初始用户组,通过GID修改
    usermod -g 888 jack
    
    # 相当于passwd -l,锁定用户
    usermod -L jack
    
    # 相当于passwd -u,解除锁定
    usermod -U jack 
    
    # 禁止用户登录
    usermod -s /sbin/nologin jack
    
    # 修改用户ID
    usermod -u 888 jack
    
  • 查看用户

    # 查看当前用户
    id
    
    # 查看当前登录的用户
    w
    
    # 查看所有的用户
    cat /etc/passwd
    cat /etc/passwd | cut -d ':' -f 1
    
  • 添加用户组

    # 建立一个一般用户组
    groupadd mygroup
    
    # 建立一个系统用户组
    groupadd -r admingroup
    
  • 删除用户组

    # 删除用户组
    groupdel admingroup
    
  • 修改用户组

    # 修改组ID
    groupmod -g 888 mygroup
    
    # 修改组名称 CIA为新名称
    groupmod -n CIA mygroup
    
  • 查看用户组

    cat /etc/group
    

wc 统计字数行数

wc命令可以统计字节数、行数、单词数

  • 语法

    wc [选项] 文件
    
  • 选项

    • -l 统计行数
    • -c 统计字节数
    • -m 统计字符数
    # 依次列出/etc/passwd中的 行数、字数、字符数
    wc /etc/passwd
    
    # 查看有多少个进程数
    ps -ef | wc -l
    

xargs 参数传递

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具,它可以将管道或标准输入的数据转换成命令行参数,也能够从文件的输出中读取数据。它能够捕获一个命令的输出,然后传递给另外一个命令,一般与管道在一起使用

# 找到修改日期在7天前的日志,并将其删除
find /local/server -name "*.log" -mtime +7 | xargs rm -rf

zip / unzip 压缩与解压

zip 是个广泛使用的压缩程序,压缩后的文件后缀名为.zip

# 将当前目录下所有txt文本压缩在一起
zip txt.zip *.txt

# 将目录/local压缩成local.zip文件
zip -r local.zip /local

# 将local.zip解压缩到指定目录,不加-d选项,则解压到当前目录
unzip local.zip -d ~/

你可能感兴趣的:(Linux-常用命令)