史上最全Linux常用指令汇总,又一吃灰教程
开发人员,必不可少的需要和Linux打交道,这里整理了经常会用到的一些Linux相关的操作,能 快速帮你熟悉并操作Linux服务器
;
本教程会在后续的使用中 持续更新
,因公众号文章,发了之后无法修改,最新更新请关注:https://lupf.cn/articles/2020/12/22/1608639406803.html
文件
文件夹操作
-
查看当前所在目录
pwd
-
查看目录下文件
ls -a ll # 以列表形式显示目录下文件
-
打开目录
cd /user/local #从根目录开始进入到/user/local目录 cd local #从当前目录开始,进入到local目录 cd .. #返回到上级目录
-
创建文件夹
mkdir /user/local/user # 从根目录开始,创建/user/local/user,此操作必须/user/local存在 mkdir -p /user/local/user # 创建目录,任何一级的目录不存在,都会创建
-
删除文件
rm -ri /test #删除根目录下的test;此操作会引导用户确认;输入y回车删除 rm -rf /test #直接删除,不需要再次确认
-
移动或修改文件名
mv /test1 /test2 # 将test1移动到test2 也可以理解为重命名为test2
-
本地拷贝
cp -rf /test /user/local # 将根目录下的test拷贝到/user/local
-
远程拷贝
scp -rf /test root@192.168.1.123:/user/local # 将本机根目录下的test目录拷贝到192.168.1.123的/user/local目录下 # root为192.168.1.123的用户名;回车之后需要输入密码 # 如果设置了免密登录,会直接拷贝过去
文件查看
-
查看前n行内容
head -n /testfile # n为要查询的行数 如 head -3 /testfile,表示查询testfile的前三行
-
查看后n行内容
tail -n /testfile # n 和上面的意思一样
-
cat输出文件的所有内容
cat /testfile
-
查看文件实时更新
tail -f /testfile # 文件的更新会实时展示出来
-
输出内容到文件
echo "输出内容" >> /testfile # 追加内容到文件后面 echo "输出内容" > /testfile # 覆盖原有内容
文件压缩解压
-
tar.gz
-
解压
tar -zxvf filename.tar.gz
-
压缩
tar –czf filename.tar.gz filename.txt
-
-
tar.bz2
-
解压
tar -jxvf filename.tar.bz2
-
压缩
tar –cjf filename.tar.bz2 filename.txt
-
-
tar
-
解压
tar –xvf filename.tar
-
压缩
tar –cvf filename.tar filename.txt
-
-
tar.Z
-
解压
tar –xZvf filename.tar.Z
-
压缩
tar –cZf filename.tar.Z filename.txt
-
-
rar
需要先安装rar
-
解压
unrar e filename.rar
-
压缩
rar a filename.rar filename.txt
-
-
zip
需要安装zip的软件
-
解压
unzip filename.zip
-
压缩
zip filename.zip filename.txt
-
文件查找
- 根据名称查找
find / -name testfile
文件编辑
-
编辑文件
vi /testfile # 开始编辑testfile
-
进入编辑模式
i insert # 按键盘i或者insert会进入编辑模式,左下角会有个--insert--
-
推出编辑模式
按esc即可推出编辑模式,推出后上图显示的insert会消失 -
进入命令行模式
# 非编辑模式下使用shift加:(英文模式下)进入命令行 shift + :
-
关键次查找
查找文件中的关键词
:/要查找的关键词 #如要查找34 按n会往下查找下一个 按shift + n往上查找上一个 n和shift + n都是滚动查询的
-
保存并退出(命令行模式下)
wq
-
强制保存并退出(慎用)
多人同时操作的时候,wq保存会失败,可以使用强制保存
wq!
-
强制退出放弃修改(慎用)
q!
-
文件内复制粘贴
-
终端下
ctrl + shift + c # 复制 ctrl + shift + v # 粘贴
-
在控制台
ctrl + insert # 复制 shift + insert # 粘贴
-
服务
-
查询某个服务的进程
如查询java
ps -ef | grep java
-
服务操作;开启、暂停、重启、自启动等
systemctl start docker.service #启动一个服务 systemctl stop docker.service #关闭一个服务 systemctl restart docker.service # 重启一个服务 systemctl status docker.service # 显示一个服务的状态 systemctl enable docker.service # 在开机时启用一个服务 systemctl disable docker.service # 在开机时禁用一个服务 systemctl is-enabled docker.service # 查看服务是否开机启动 systemctl list-unit-files|grep enabled # 查看已启动的服务列表 systemctl --failed # 查看启动失败的服务列表
-
杀掉某个进程
kill -9 进程号 # 如上可以使用kill -9 2336 即可杀掉2336对应的java进程
-
服务端口查看
-
查看端口监听情况
ss -tnl
-
端口查进程
ss -lnp | grep 80
-
使用net-tools查看端口
yum install -y net-tools netstat -tunl | grep ':80' netstat -tunlp netstat -apn | grep ':80' netstat -ntu 查看连接数 netstat -nat|grep -i "80"|wc -l
-
定时任务
crontab说明
crontab [-u username] -e (编辑定时任务) -l (列出定时任务里的命令) -r (删除定时任务)
定时任务格式
-
格式
* * * * * command 分 时 日 月 周 指令
-
操作符
-
星
*
取值范围内的所有数字
-
斜杠
/
每过多少个数字
-
横杠
-
从X到Z
-
逗号
,
散列数字
-
示例
-
示例1:每1分钟执行一次执行
* * * * * echo "hello" >> /test/hello.txt
-
示例2:每小时的第3和第15分钟执行
3,15 * * * * echo "hello" >> /test/hello.txt
-
示例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * echo "hello" >> /test/hello.txt
-
示例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * echo "hello" >> /test/hello.txt
-
示例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 echo "hello" >> /test/hello.txt
-
示例6:每晚的21:30执行
30 21 * * * echo "hello" >> /test/hello.txt
-
示例7:每月1、10、22日的4 : 45执行
45 4 1,10,22 * * echo "hello" >> /test/hello.txt
-
示例8:每周六、周日的1 : 10执行
10 1 * * 6,0 echo "hello" >> /test/hello.txt
-
示例9:每天18 : 00至23 : 00之间每隔30分钟执行
0,30 18-23 * * * echo "hello" >> /test/hello.txt
-
示例10:每星期六的晚上11 : 00 pm执行
0 23 * * 6 echo "hello" >> /test/hello.txt
-
示例11:每一小时执行
* */1 * * * echo "hello" >> /test/hello.txt
-
示例12:晚上11点到早上7点之间,每隔一小时执行
* 23-7/1 * * * echo "hello" >> /test/hello.txt
注意事项
- 目录创建
如上示例中,如果出现文件夹的输出,那么文件夹必须存在 - 指令
环境变量中的指令手动执行的时候,可以快捷输入,但定时任务就必须输入全路径
权限
权限定义
-rw-r--r--. 1 root root 4 Dec 22 18:28 /testfile [rw-] [r--] [r--] 文件所有者的权限 文件所在组的权限 其他组的权限
用户组操作
useradd #用于创建用户 groupadd #用于创建组 usermod #用于修改用户属性
权限说明
-
文件夹
r # 只能读取文件列表 w # 没有任何作用 x # 可以进入目录 rw # 可以读文件列表,依旧无法删除文件 rx # 读取文件列表,可以cd进mul,但是无法删除目录下的文件,对文件有w权限可以清空或者写入 wx # 可以增加和删除目录中文件,可以cd进目录,但是无法查看目录有哪些内容,知道文件名可以打开文件 rwx # 可以进入目录,显示目录中内容,可以增删目录中文件
-
文件
r # 读取文件内容 w # 写入 x # 执行,单独的执行权限只能运行二进制可执行文件 rw # 可读可写 rx # 可以执行二进制之外的编译类或者脚本类的文件 wx # 可以修改内容,无法查看,可以执行二进制可执行文件 rwx # 可以查看文件内容,可以增删文件内容,可以执行可执行文件
数字权限说明
r : 4 w : 2 x : 1 权限拆解 [-rwxrwxrwx] [r w x] [r w x] [r w x] [4+2+1] [4+2+1] [4+2+1] ==> 权限值为:777 [-rwxr-xr--] [r w x] [r - x] [r - -] [4+2+1] [4+0+1] [4+0+0] ==> 权限值为:754
设置权限
chmod 777 /testfile # 其中777为根据上面的数字权限方式计算出来的
机器相关
cpu
-
查看CPU个数
-
查看物理CPU的个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
-
查看逻辑CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l
-
-
查看CPU核数
cat /proc/cpuinfo | grep "cpu cores" | uniq
-
查看CPU型号
cat /proc/cpuinfo | grep 'model name' |uniq
-
查看CPU的主频
cat /proc/cpuinfo |grep MHz|uniq
-
查看CentOS版本
cat /etc/redhat-release
-
查看操作系统内核版本
cat /proc/version
-
查看bios信息
dmidecode -t bios
内存
-
查看内存总数
cat /proc/meminfo | grep MemTotal
-
查看内存条数
dmidecode | grep -A16 "Memory Device$"
磁盘
-
查看硬盘大小
fdisk -l | grep Disk
-
查看磁盘占用
-
查看整个磁盘占用全款
df -h
-
查看当前所处目录的磁盘占用
du -h --max-depth=1
-
按空间占用排序
du -s * | sort -nr | head 选出排在前面的10个 du -s * | sort -nr | tail 选出排在后面的10个
-
网卡
-
查看网卡硬件信息
lspci | grep -i 'eth'
-
查看系统的所有网络接口
ip addr
时间
-
查看时间
date
-
更新时间
# 安装ntpdate yum install -y ntpdate # 更新时间 ntpdate 0.asia.pool.ntp.org # 将系统时间同步到硬件,防止系统重启后时间被还原 hwclock --systohc
其他更多操作
- 以下命令也是比较常用的
uname -a # 查看内核/操作系统/CPU信息的linux系统信息 head -n l /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # 查看计算机名的linux系统信息命令 lspci -tv # 列出所有PCI设备 lsusb -tv # 列出所有USB设备的linux系统信息命令 lsmod # 列出加载的内核模块 env # 查看环境变量资源 free -m # 查看内存使用量和交换区使用量 df -h # 查看各分区使用情况 du -sh # 查看指定目录的大小 grep MemTotal /proc/meminfo # 查看内存总量 grep MemFree /proc/meminfo # 查看空闲内存量 uptime # 查看系统运行时间、用户数、负载 cat /proc/loadavg # 查看系统负载磁盘和分区 mount | column -t # 查看挂接的分区状态 fdisk -l # 查看所有分区 swapon -s # 查看所有交换分区 hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) dmesg | grep IDE # 查看启动时IDE设备检测状况网络 ifconfig # 查看所有网络接口的属性 iptables -L # 查看防火墙设置 route -n # 查看路由表 netstat -lntp # 查看所有监听端口 netstat -antp # 查看所有已经建立的连接 netstat -s # 查看网络统计信息进程 ps -ef # 查看所有进程 top # 实时显示进程状态用户 w # 查看活动用户 id # 查看指定用户信息 last # 查看用户登录日志 cut -d: -f1 /etc/passwd # 查看系统所有用户 cut -d: -f1 /etc/group # 查看系统所有组 crontab -l # 查看当前用户的计划任务服务 chkconfig –list # 列出所有系统服务 chkconfig –list | grep on # 列出所有启动的系统服务程序 rpm -qa # 查看所有安装的软件包 cat /proc/cpuinfo # 查看CPU相关参数的linux系统命令 cat /proc/partitions # 查看linux硬盘和分区信息的系统信息命令 cat /proc/meminfo # 查看linux系统内存信息的linux系统命令 cat /proc/version # 查看版本,类似uname -r cat /proc/ioports # 查看设备io端口 cat /proc/interrupts # 查看中断 cat /proc/pci # 查看pci设备的信息 cat /proc/swaps # 查看所有swap分区的信息
部分内容参考于: dwz-9.cn/0S8fS
End