Linux下的常用命令(5千字纯命令长文)

提示:linux下常用命令、linux下的定时任务、两个服务器时间不一致,怎么同步、linux下查日志的命令、两个服务器之间建立信任、判断端口通不通、linux中防火墙、对外开放端口


前言

今天分享一些linux中的常见命令,当然,可能有一部分不那么常用。话不多说,直接上硬菜。本人水平有限,如有误导,欢迎斧正,一起学习,共同进步!


一、基础命令

1、cd

cd命令,进入到某个文件夹中。示例:
cd /usr/local

2、ls/ll

ls、ll是查看当前文件夹下的全部文件列表。示例:
ls -lht 查看当前文件夹内,所有文件的大小

3、stat

查看文件的创建、修改时间。示例:
stat 文件名

4、grep

过滤掉一部分内容。示例:
ps -ef |grep java // 筛选出来是java的进程

5、cp

cp命令,复制文件
cp file1 file2 file3 dir 将文件1、文件2、文件3复制到目录dir当中
cp 源信息(fileName) 目标信息(newFileName) 复制文件
cp -r directoryName newDirectoryName 复制目录(复制目录用-r)

6、scp

也是复制文件,只不过是两个服务器之间的cp。

scp  -r     /usrl/text.txt  10.2.193.85:/root/			把当前虚拟机的text。txt文件,推送到远程的 10.2.193.85:/root/  路径下
scp  -r  10.2.193.85:/root/jj.txt     .		从远程物理机10.2.193.85中,拿到jj.txt    拉取到本机中
scp 10.1.200.173:/root/dist.zip ./			从远程物理机10.2.193.85中,拿到jj.txt    拉取到本机中的当前文件夹

示例:
 scp -p port  username@serverip:/home/user/file    /home/user/file
 -p port为指定端口,一般采用默认端口,可省略;
  username为远端主机的用户名;

7、mv

mv 移动某个文件或文件夹。
-f:force,强制的意思,若目标文件已经存在,不会询问而直接覆盖
-i:若文件已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且比目标文件新,才会更新
示例:
mv /usr/local/jdk /usr/jdk

8、rm

rm命令,删除文件或目录。
-f:就是force的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问用户是否操作
-r:递归删除,常用于目录删除,是一个非常危险的参数
-v:显示指令的详细执行过程。
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
示例:
rm -rf /usr/local/jdk

9、ps

ps,查看linux下的程序
ps aux:查看系统的所有进程
ps ax:查看不与terminal有关的所有进程
ps -|A:查看系统所有的进程数据
ps axjf:查看连同一部分进程树状态
示例:
ps -ef |grep java
ps aux | grep keywords

10、kill

kill,杀死某个进程
kill -signal PID 。其中signal如下
1:启动被中止的进程
2:相当于ctrl+c,中断一个程序的进行
9:强制中断一个进程的进行
15:以正常结束进程方式来终止进程
17:ctrl+z,暂停一个进程的进行
示例:
kill -9 15672

11、tar

tar [参数] source [target] source压缩文件,target解压缩后的目标位置

压缩:tar  -icv  -f  filename.tar.bz2	要被处理的文件或目录名称
tar  -czf  要压缩的目录   压缩后的文件名
查询:tar  -itc  -f  filename.tar.bz2
解压:tar  -jxv  -f  filename.tar.bz2  -C    // tar -zxc jdk -C /usr/local  -C是指解压到指定目录
tar  -zxf  压缩文件名
tar  -zxvf  压缩文件名

z:zip格式压缩文件,包含zip,gz,tar,gz等格式,不包含rar
c:创建压缩包
x:解压缩
f:指定文件
v:显示解压过程

示例:tail -zxvf a.tar

12、cat

cat命令,查看文件详情。示例:
cat a.txt

13、chmod

chmod命令,改变文件的权限。示例:
chmod 755 start.sh
chmod +x * // 这个文件夹下的全部文件,都赋予可执行的权限
也可以:
chmod +x /bin/scp 给scp命令加权限(目标服务器,把这个文件要拷贝到的服务器)
在这里插入图片描述

14、vi/vim(vim是增强命令,不代表所有的linux都支持)

vi  filename
进入编辑模式:
    a:append,追加的方式进入编辑模式
	i:insert,插入的方式进入编辑模式
	o:在光标的位置之下,新增一行,进入编辑模式
	O:在光标的位置之上,新增一行,进入编辑模式
:dd:删除指定行,默认是1行
:w:保存
:q:退出vi编辑器
:wq:保存并退出
:q!:强制退出不保存
:set  nu:显示行号
/keywords:搜索关键字,这个keywords是关键字
G:光标跳到文件尾
gg:光标跳到文件头
:%s/8001/8002/g		// 将整个vim中的 8001 都换成8002,g代表全局替换

示例:
vim a.txt

15、file

file命令,用于判断文件的基本数据(因为linux中不是以后缀来区分的,看他是什么类型的数据)
file filename 示例:
file ./test

16、pwd

显示当前的目录层级。示例:
pwd

17、clear/clear screen

清空当前的显示屏。示例:
clear

18、touch

touch,创建文件命令。
touch 文件名
touch 目录/文件名
示例:
touch a.txt

19、mkdir

mkdir创建目录(文件夹)
mkdir directoryName 创建一个目录
mkdir -p parentDirectory/childDirectory 创建多级目录
mkdir ./node800{1,2,3,4,5,6} // 在当前目录同时创建8001,8002,8003…等6个节点

二、查日志相关命令

1、tail

查看一个文件的详情。示例:
tail -f 文件名
tail -100 文件名 // 看前100行

2、pwdx

pwdx,根据线程id,显示对应的目录层级。示例:
pwdx 线程id 显示当前线程id的线程的,文件所在位置

3、head

head显示前多少行(默认显示前10行)。head -number filename
示例:
cat -n nohup.out |tail -n +785|head -n 20
表示拿到 nohup。out文件中的 785行 下面的20行数据

4、cat

1、有关键字的		cat -n test.log | grep “关键词”
	cat -n catalina.out |grep 717892466
	
	cat error.log | grep -B 5 'nick' 显示nick及前5行

    cat error.log | grep -A 5 'nick' 显示nick及后5行

    cat error.log | grep -C 5 'nick' 显示file文件里匹配nick字串那行以及上下5行

    cat error.log | grep -n -B10 -A10 5 'nick' 显示file文件里匹配nick字串前后102、有行号的
	首先: cat -n test.log |grep "地形"  得到关键日志的行号
	
	cat -n nohup.out |tail -n +785|head -n 20
	表示拿到 nohup。out文件中的 785行  下面的20行数据

5、vi

vi 进去日志文件, / 关键字 n 下一个,N 上一个 G 或者是 g

三、服务相关

1、df -hl

df -hl 查看当前内存的使用量,容量、已用、可用、已用%、挂载点。(查看服务器存储满没满)。示例:
df -hl

2、ifconfig

查看网卡信息。
ifconfig -a 查看所有网卡信息。
示例:
ifconfig

3、service

service服务控制命令
service 服务名称(iptables) start
service 服务名称 stop
service 服务名称 restart
service 服务名称 status

4、wget

wget 命令,是从网上下载资源用的。示例:
wget http://download.redis.io/releases/redis-5.0.2.tar.gz

5、telnet

telnet ip 端口 (更多的是为了测ip的端口通不通的)。
telnet 192.168.0.5 //登录IP为 192.168.0.5 的远程主机
telnet 10.2.196.123 8848
telnet 怎么退出?
ctrl + ] 到命令行以后,
quit 退出telnet

6、ssh

ssh ip 切换到另一个虚拟机中(更多的是跳转)。示例:
ssh 10.1.200.173

7、ssh-keygen

如果你是想让 A 机和 B 机建立受信任,则将a的秘钥发到b上。a和 C 建立信任,则将a的密匙发到c上。要想b和a建立信任,则将b的密匙发到a上,b和c建立信任,则将b的密匙发到c上。就是若希望互相信任,则互相发就行。

在A机上:
ssh-keygen -t rsa
此时在~/.ssh文件夹中会有公钥和私钥:id_rsa 和id_rsa.pub	cd /root/.ssh/
只要将id_rsa.pub文件复制到B机的相应的目录处,并且改名为authorized_keys就可以了


如果两台主机不在同一个内网中,并且其中一台是在一个共用IP地址的内网中,为其映射了一个端口号,
那么外网中的那台主机需要指定需要访问的端口号:
命令为:
scp -P 端口号 用户名@IP地址:路径  目的

8、curl

curl:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。示例:
curl http://www.linux.com 执行后,www.linux.com 的html就会显示在屏幕上了

9、jps

jps命令是jdk提供的一个查看当前java进程的小工具,jps -l 输出完整的包名,应用主类名,jar的完全路径名。示例:
jps

10、local

定位到某个服务名,在服务器中的位置。示例:
locate redis-cli | grep ‘/redis-cli$’ // ( redis-cli 是服务名 )

11、ss

ss -s 查看tcp连接的数量

12、crontab

linux下的定时任务

crontab -l	查看linux下的 定时任务(当前登录人的 linux下的定时任务)
		使用场景:如果你的服务器内存特别小的话,就需要定时的去清理日志,所以用定时任务去定时的去跑清理日志的脚本
crontab	-e 	去编辑这个定时任务的内容
crontab  	-r	删除

13、systemctl

比如两个服务器的时间不一致,怎么同步。

①直接修改服务器时间
输入命令行:date 查询服务器时间
输入命令行:date -s "20220112 12:42:00"

②同步其他服务器的时间到当前服务器
输入命令行:systemctl stop ntpd
输入命令行:systemctl disable ntpd
输入命令行:ntpdate 10.10.51.245(替换成时间正确的服务器)

14、md5sum

是用来比较两个文件内容是否一致的,如果md5的值一样,则说明俩文件一样。比较的是文件的内容,不是文件名。示例:
md5sum * (cd /opt/www/app/gwtrip/reconciliation/service)

15、sz

是从服务器下载文件用的。示例:
sz 文件名 把某个文件从服务器上下载到本机上

16、rz

将某个文件上传到服务器上(执行完以后,会弹出一个框,让你去选择文件)。示例:
rz

17、firewall

防火墙。示例:
firewall-cmd --list-all 列表
firewall-cmd --add-port=8080/tcp --permanent 查看防火墙已经开放的端口
firewall-cmd --reload 重启防火墙

18、reboot

reboot,重启linux

19、mysql

是用来连接mysql数据库用的。
mysql -u root -h 192.168.27.128 -P 3306 -p
mysql -u 是用户名,-h是连接的mysql的ip,-P是对方的端口,必须是大写的

20、du

查看文件大小。
du -sh 目录名称 查看指定目录的总大小


总结

作为一个Java开发的话,掌握以上命令,肯定就可以完成项目的部署、重启、排查等要求了,至于一些强化的命令,会有专门的运维工程师去处理的。后续有机会的话,还会给大家分享一些深入的命令。


版权声明:本文为weixin_42351206原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。