【Linux-常用命令】Linux 常用命令大全
无论你是编程小白还是职场老手,都建议你收藏这份常用 Linux 命令手册。
无论是后端程序员还是前端程序员,一定避免不了和Linux系统打交道。可能是自己在学习的时候搭建虚拟机环境,也可能是在公司测试环境进行服务的维护,甚至可能去线上服务器进行生产问题的排查。
这就要求我们要熟练使用Linux命令行,相关的常用命令很可能不经常使用就忘了,这里我收集了一些常用命令以便需要时查看,欢迎作补充。(这里的提到操作都默认以CentOS系统为基础)
如果你还没有安装 Linux 虚拟机,可以参考这篇文章:
开发攻城狮必备的Linux虚拟机搭建指南
1)文件管理
1.1.目录操作
切换目录 cd
查看目录 ls
-l
列出文件详细信息 或者直接ll
-a
列出当前目录下所有文件及目录,包括隐藏的a(all)
创建目录 mkdir
- -p 创建目录,若无父目录,则创建p(parent)
输出信息 echo
打印文件到命令行(查看文件) cat
改变文件所属用户 chown
改变文件所属组 chgrp
下载文件 wget
在文本文件中查找某个字符串 grep
统计文本中行数、字数、字符数 wc
部分显示 more/less
查找文件 find / -name 'auto.cnf'
创建空文件 touch
复制文件 cp
移动或重命名 mv
删除文件 rm
- -r 递归删除,可删除子目录及文件
- -f 强制删除
删除空目录 rmdir
树形结构显示目录,需要安装tree包 tree
显示当前目录 pwd
创建链接文件 ln
分页显示文本文件内容 more、less
显示文件头、尾内容 head、tail
1.2.vim 操作
进入编辑器 vi/vim
,vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
- 进入编辑模式插入
i
- 退出编辑模式
esc
- 保存:后面输入
w
- 退出:后面输入
q
- 不保存退出:后面输入
q!
- 显示行号
set number
- 查找关键字
/xxxx
按n跳到下一个,shift+n上一个 - 复制光标所在行,并粘贴
yyp
- h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
1.3.打包压缩相关命令
打包压缩 tar\gzip\bzip2
-c
归档文件-x
压缩文件-z
gzip压缩文件-j
bzip2压缩文件-v
显示压缩或解压缩过程 v(view)-f
使用档名
例如:
只打包,不压缩:tar -cvf /home/abc.tar /home/abc
打包,并用gzip压缩:tar -zcvf /home/abc.tar.gz /home/abc
打包,并用bzip2压缩:tar -jcvf /home/abc.tar.bz2 /home/abc
如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf
中的“c” 换成“x” 就可以了。
1.4.Linux 管道
将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。
例如:
grep -r “close” /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。
1.5.Linux 远程拷贝命令
# 1、从本地拷贝文件到远程的命令
scp 本机文件名 远程主机用户名@远程主机名或ip:本地存放路径
# 2、从本地 拷贝文件夹到 远程的命令
scp -r 本机文件名 远程主机用户名@远程主机名或ip:本地存放路径
# 3、从远程拷贝文件到本地的命令
scp 远程主机用户名@远程主机名或ip:本地存放路径 本机文件名
# 4、从远程拷贝文件夹到本地的命令
scp -r 远程主机用户名@远程主机名或ip:本地存放路径 本机文件名
1.6.查看文件目录大小
目录的容量(du)
语法格式[plain] du [-ahskm] 文件或者目录名
参数解释:
-a
:列出所有的文件与目录容量,因为默认仅统计目录的容量而已
-h
:以人们较易读的容量格式呈现(G/M/K)显示,自动选择显示的单位大小
-s
:列出总量而已,而不列出每个个别的目录占用容量
-k
:以KB为单位进行显示
-m
:以MB为单位进行显示常用命令参考 查看当前目录大小[plain] du -sh ./
查看某一指定目录大小:[plain] du -sh directory_name
在指定目录下显示10个占用空间最大(最小)的目录或文件最大:[plain] du -sh * | sort -nr | head
最小:[php] du -sh * | sort -n | head
2)文件权限管理
2.1.三种基本权限
R:读,数值表示为 4
W:写,数值表示为 2
X:可执行,数值表示为1
[root@VM-16-2-centos ~]# ll
total 597952
-rw------- 1 root root 12387614 Aug 29 2021 apache-zookeeper-3.7.0-bin.tar.gz
-rw-r--r-- 1 root root 113304268 May 3 12:22 jdk-8u281-linux-x64.rpm
如上所示,jdk-8u281-linux-x64.rpm
文件的权限为-rw-r--r--
,一共十个字符,分成四段。
- 第一个字符“-”表示普通文件;这个位置还可能会出现
l
链接;d
表示目录 - 第二三四个字符
rw-
表示当前所属用户的权限,所以用数值表示为 4+2=6 - 第五六七个字符
r--
表示当前所属组的权限,所以用数值表示为 4 - 第八九十个字符
r--
表示其他用户权限,所以用数值表示为 4
所以操作此文件的权限用数值表示为 644
2.2.更改权限
更改权限:sudo chmod
[u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名
例如:有一个文件 filename,权限为-rw-r----x
,将权限值改为-rwxrw-r-x
,用数值表示为765
sudo chmod u+x g+w o+r filename` 也可以用数值表示 `sudo chmod 765 filename
3)运行程序
3.1.命令行运行
运行./filename
退出ctrl+c
3.2.后台运行
后台运行jar nohup java -jar xxx.jar 2>&1 &
运行 nohup command >out.file 2>&1 &
退出 ps -ef |grep 关键字 |awk '{print $2}'|xarg kill -9
3.3.服务方式运行
设置开机启动 systemctl enable
启动systemctl start
关闭systemctl stop
4)系统相关
4.1.系统管理命令
查看端口占用情况 netstat -tunlp | grep 端口号
查看cpu使用情况 lscpu
或者cat /proc/cpuinfo
指定行数查看日志信息 tail -f xx
显示指定文件的详细信息,比ls更详细 stat
显示在线登陆用户 who
显示当前操作用户whoami
显示主机名hostname
显示系统信息uname
动态显示当前耗费资源最多进程信息top
显示瞬间进程状态 ps \ ps -aux
查看目录大小 du -h /home
(带有单位显示目录信息)
查看磁盘大小 df -h
(带有单位显示磁盘信息)
查看内存 top
查看磁盘IO读写情况 iotop
(需要安装一下:yum install iotop
)
直接查看输出比较高的磁盘读写程序 iotop -o
查看网络情况 ifconfig
测试网络连通 ping
显示网络状态信息 netstat
命令不会用了,看文档 如:man grep
[root@VM-16-2-centos ~]# man grep
GREP(1) General Commands Manual GREP(1)
NAME
grep, egrep, fgrep - print lines matching a pattern
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
……
清屏 clear
对命令重命名 alias
,如:alias showmeit="ps -aux"
,解除使用unaliax showmeit
杀死进程 kill
,可以先用ps
或 top
命令查看进程的id,然后再用kill命令杀死进程。kill -9
强制删除
查看进程 ps aux
查看端口号占用情况 nestat -tunlp | grep
远程传输 scp -r /dir/xx root@ip:/dir
4.2.防火墙
查看防火墙状态 firewall-cmd --state
停止防火墙 systemctl stop firewalld.service
禁止firewall开机启动 systemctl disable firewalld.service
4.3.关机和重启
关机 shutdown -h now
- -r 关机重启
- -h 关机不重启
- now 立刻关机
重启 reboot
关机 halt
4.4.网络配置
查看网卡信息 ifconfig
网络配置 /etc/sysconfig/network-script/ifcfg-eth0
配置网卡 /etc/udev/rules.d/70-persistent-net.rules
5)用户管理
创建用户 useradd
设置密码 passwd
- 存储组账号
/etc/group
- 系统用户配置文件
/etc/passwd
存储用户账号的密码 /etc/shadow
存储用户组账号的密码/etc/gshadow
用户名useradd
用户名userdel
用户名adduser
组名groupadd
组名groupdel
给root设置密码passwd root
su root
su - root
系统环境变量/etc/profile
用户环境变量bash_profile
用户环境变量.bashrc
su user
切换用户,加载配置文件.bashrc
su - user
切换用户,加载配置文件/etc/profile ,加载bash_profile
更改文件的用户及用户组
sudo chown [-R] owner[:group] {File|Directory}
-rw-r--r-- 1 root root 113304268 May 3 12:22 jdk-8u281-linux-x64.rpm
例如:
还以 jdk-8u281-linux-x64.rpm
为例。属于用户root,组root
要想切换此文件所属的用户及组。可以使用命令。
sudo chown daley:java jdk-8u281-linux-x64.rpm
6)安装软件
6.1.下载 rpm 安装包方式
安装 rpm -i jdk-XXX_linux-x64_bin.rpm
查找 rpm -qa | grep jdk
列表 rpm -qa | more
ubuntu dpkg 方式
查找dpkg -I | grep jdk
列表dpkg -I | more
安装dpkg -i jdk-XXX_linux-x64_bin.deb
6.2.yum 方式
比如安装 vim:yum install -y vim
比如卸载 vim:yum erase vim*
安装 rz:yum install lrzsz
-
rz:从本地上传文件至服务器
-
sz filename:从服务器下载文件至本地
离线下载安装包:yum -y install vim --downloadonly --downloaddir /home/test/
搜索 yum search jdk
安装 yum install java-11-openjdk.x86_64
删除 yum erase java-11 -openjdk.x86 64
配置文件 /etc/yum.repos.d/CentOS-Base.repo
ubuntu apt-get 方式
搜索 apt・cache search jdk
安装apt-get install openjdk-9-jdk
删除apt-get purge openjdk-9-jdk
配置文件/etc/apt/sources. Iist
6.3.下载压缩文件方式
编辑 .bashrc
环境变量配置
- 打开环境变量文件
vi /etc/profile
- 配置环境变量
export JAVA_HOME=/root/j d k-XXX_lin ux-x64
export PATH=$JAVA HOME/bin:$PATH
- 刷新配置
source /etc/profile