Linux常用运维命令整理记录
前言
作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Linux运维命令
基本命令
目录切换
cd base-admin/ #切换到当前目录下的base-admin目录
cd .. #切换到上一层目录
cd / #切换到系统根目录
cd ~ #切换到用户主目录
cd - #切换到上一个操作所在目录
目录操作
mkdir 目录名称 #创建目录 ls或者ll(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息) 查看目录信息 find 目录 参数 #寻找目录(查) 示例: 列出当前目录及子目录下所有文件和文件夹: find . 在/home目录下查找以.txt结尾的文件名:find /home -name "*.txt" 同上,但忽略大小写: find /home -iname "*.txt" 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf" mv 目录名称 新目录名称 #修改目录的名称(改) 注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到mv命令的另一个用法。 mv 目录名称 目录的新位置 #移动目录的位置---剪切(改) 注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。 cp -r 目录名称 目录拷贝的目标位置 #拷贝目录(改),-r代表递归拷贝 注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
#把dev文件夹复制到/app下
cp -r /home/dev /app rm [-rf] 目录 #删除目录(删) 注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包
rm -rf xxx.tar
rm -rf xxx/
#压缩文件夹
tar -cvf xxx.tar xxx/
#解压tar
tar -xvf xxx.tar
文件操作
touch 文件名称 #文件的创建(增) cat|more|less|tail 文件名称 #文件的查看(查) cat 查看显示文件内容 more 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看 less 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看 tail-10 查看文件的后10行,Ctrl+C结束 注:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化 vim 文件名称 #修改文件的内容(改) 注:vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。 在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤: vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。) 如果没有这个命令,先进行yum在线安装:yum -y install vim*
rm -rf 文件 #删除文件(删) 注:同目录删除:熟记 rm -rf 文件 即可
rz #弹出选择文件上传框
sz 文件 #即可从liunx下载该文件
注:如果没有这个命令,先进行ynm在线安装:yum install -y lrzsz
查看Linux参数
查看系统信息
#查看内核信息 uname -a
#查看linux系统版本 cat /etc/issue
查看CPU信息
查看cpu信息
lscpu
cat /proc/cpuinfo
显示当前正在执行的进程的CPU使用率,内存使用率
top
查看线程的CPU使用率,内存使用率
top -Hp pid
查看内存信息
free -h
查看磁盘信息
df -h
df -h .
#显示当前目录下所有文件和目录的大小,按大小排序
du -h| sort -rh
查看网络带宽
# 安装iftop yum install iftop # 查看网络情况 iftop -P
端口与防火墙
0、查看所有服务进程 ps aux 1、查看当前所有tcp端口及进程服务 netstat -ntlp 2、防火墙 iptables service iptables status 查看防火墙状态 service iptables stop 停止防火墙 service iptables start 启动防火墙 service iptables restart 重启防火墙 开放、移除8080端口 vim /etc/sysconfig/iptables 加入、删除配置文件,如: -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEP 或 -ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT 修改完成后使用 :wq 保存退出文件,重启生效:service iptables restart firewalld systemctl status firewalld 查看状态 systemctl enable firewalld 启用防火墙 永久 systemctl stop firewalld 停止防火墙 重启后失效 systemctl disable firewalld 禁用防火墙 永久 systemctl start firewalld 启动 systemctl restart firewalld 重启 开放、移除8080端口 开放 firewall-cmd --add-port=8080/tcp --permanent 移除 firewall-cmd --permanent --remove-port=8080/tcp 修改完成重启生效 systemctl restart firewalld 查询已开放的端口 netstat -anp 查询指定端口是否已开 firewall-cmd --query-port=8080/tcp 提示 yes,表示开启;no表示未开启。
# 查看某个端口占用情况 lsof -i :8080 # 查看所有占用端口情况 lsof -nP -iTCP -sTCP:LISTEN
yum安装jdk
参考:linux在线安装JDK(1.8版本):https://blog.csdn.net/zxb730916/article/details/80899429?tdsourcetag=s_pctim_aiomsg
安装
查看是否已安装JDK,卸载 yum list installed |grep java 卸载CentOS系统Java环境,*表示卸载所有openjdk相关文件输入 yum -y remove java-1.8.0-openjdk* 卸载tzdata-java yum -y remove tzdata-java.noarch 列出java环境安装包 yum -y list java* 安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令 yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
也可以选择下载jdk压缩包,解压即可使用(参考:Java基础之开发环境配置),然后配置下环境变量即可
解压命令:tar -xvf jdk1.8.0_281.tar
配置当前用户环境变量 vim ~/.bashrc 配置全局环境变量 vim /etc/profile 在最后一行添加 export JAVA_HOME=/home/app/jdk1.8.0_161 export PATH=$JAVA_HOME/bin:$PATH 刷新配置 source ~/.bashrc source /etc/profile
查看环境变量
echo $JAVA_HOME
查看
使用 java -version 查看版本号确认是否安装成功
java -version
yum安装mysql
参考:Linux之yum安装MySQL:https://www.jianshu.com/p/136003ffce41
安装
2020-09-13更新
注意,选择yum源的时候要看下自己的linux系统是什么版本,el7 表示centos7.x平台,el6 表示centos6.x平台,否则后续安装会报错,版本匹配
详情可参考mysql官网说明介绍:
https://dev.mysql.com/downloads/mysql/
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html#yum-repo-select-series
https://dev.mysql.com/downloads/repo/yum/
下载yum源 # 命令说明:wget -i -c http://dev.mysql.com/get/mysql{数据库版本}-community-release-el{linux系统版本}.noarch.rpm
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm wget -i -c http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm 安装 yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server
如果你碰到安装的是el6的源,但安装数据库服务的时候还是去安装el7,然后还是导致报错(场景跟这篇文章一样:https://ask.csdn.net/questions/770387)
解决方法:https://www.jianshu.com/p/7b8c4dea6829
如果出现:Public key for mysql-community-common-5.7.37-1.el6.x86_64.rpm is not installed
解决方法:修改对应版本号的gpgcheck,跳过校验即可:vi /etc/yum.repos.d/mysql-community.repo
修改gpgcheck=0保存退出,继续安装
安装后使用命令查看版本号,验证是否安装成功
mysql -V
启动
如果systemct1命令找不到,可以用:service mysqld start / stop / restart
启动 systemctl start mysqld.service 查看root初始密码 grep "password" /var/log/mysqld.log 使用root登录mysql mysql -uroot -p 设置安全级别 set global validate_password_policy=0 默认密码长度为8,可以设置为其它值,最小4位 set global validate_password_length=4 修改root密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 可视化工具的登录授权:(如果授权不成功,请查看防火墙) grant all on *.* to root@'%' identified by 'root';
配置到这里就可以使用数据库工具去连接操作数据库了
2020-09-12更新
如果按上面的配置不成功,可以按下面这种方式进行配置,注意:直接使用yum安装的mysql会是默认版本5.1的版本
1、先卸载旧的mysql
#查看现有的 rpm -qa|grep mysql #一一卸载 rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
重新安装
#安装mysql 服务器端 yum -y install mysql-server mysql-devel #安装mysql客户端 yum install mysql #启动mysql服务 service mysqld start 或者 /etc/init.d/mysqld start 停止: service mysqld stop 重启: service mysqld restart #创建root管理员: mysqladmin -u root password root #登陆 mysql -uroot -proot #配置远程连接 grant all on *.* to root@'%' identified by 'root';
忘记密码了怎么办?
#修改配置文件,添加 skip-grant-tables 开启免密登录 vim /etc/my.cnf
重启,登录后修改用户密码
#重启 service --status-all service mysqld stop service mysqld start #修改密码 update mysql.user set password=password('新密码') where user='root';
然后在修改回配置文件,取消免密登录,重启服务即可
PS:yum安装下载速度巨慢无法接受?由于安装centos后的默认yum源为centos的官方地址,所以在国内使用很慢甚至无法访问,可以把yum源换成阿里镜像:参考:https://cloud.tencent.com/developer/article/1115975
yum安装nginx
yum安装nginx yum install nginx 查看nginx版本号 nginx -V 运行/停止nginx service nginx start service nginx stop
默认安装位置:/etc/nginx
部署JAR包
配置环境变量
我们的项目大多都是通过环境变量去选择配置文件分支,因此要选配置好环境变量
1、vim ~/.bash_profile 2、export HUANZI_PROFILE=huanzi-prod,esc :wq保存退出 3、source ~/.bash_profile 4、查看环境变量 echo $HUANZI_PROFILE,如果输出huanzi-prod设置成功
从关闭到启动
0、查看运行的java项目 pgrep java | xargs ps 1、先kill掉旧服务 pkill -f myspringboot-0.0.1
kill -9 pid #强制执行,彻底杀死进程 2、后台启动新服务 (nohup后台运行,&后台运行的区别: 使用nohup运行程序: 结果默认会输出到nohup.out 使用Ctrl + C发送SIGINT信号,程序关闭 关闭session发送SIGHUP信号,程序免疫 使用&后台运行程序: 结果会输出到终端 使用Ctrl + C发送SIGINT信号,程序免疫 关闭session发送SIGHUP信号,程序关闭 ) 注:先cd进到jar位置 nohup java -jar myspringboot-0.0.1.jar & 如需额外输出日志(如果项目已经配置了日志,就不需要再重复输出日志了) nohup java -jar myspringboot-0.0.1.jar > myspringboot-0.0.1.log & 3、控制台查看日志 tail -f myspringboot-0.0.1.log 4、如需修改jar包(前端代码、配置文件等) 1、先cd进到jar位置,然后使用 vim 命令进入jar包 2、使用 / 命令模糊搜索定位文件,例如main.js 3、按回车进入文件,修改完成后使用 :wq 保存退出文件,回到jar包目录,使用 :q 退出jar包,即可成功修改文件内容 PS:修改jar,重启生效
常用启动参数
例如(将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展)
nohup java -Xmn200m -Xms800m -Xmx800m -XX:+UseG1GC -jar myspringboot-0.0.1.jar &
2020-12-07更新
使用nohup命令启动,程序运行一段时间后,nohup.out过大,三个月时间,就达到了5个G
这种问题处理办法(参考文章:https://www.jianshu.com/p/d0f55a25486b):
1、关闭当前的服务,rm -rf 直接删掉,重启服务(生产环境勿用)
2、清空nohup.out,这个不需要关闭服务
echo '' > nohup.out
3、一劳永逸解决nohup.out文件过大的问题,关闭当前服务,重启服务重定向输出out文件(生产环境勿用)
# 指定到黑洞目录,什么信息也不要 nohup java -jar base-admin.jar > /dev/null 2>&1 &
Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
JVM性能排查
简单命令
查看目标JVM的所有配置项参数
jinfo -flags pid
查看堆内存信息和垃圾回收信息 jstat -gc pid S0C:年轻代中 To Survivor 的容量(单位 KB); S1C:年轻代中 From Survivor 的容量(单位 KB); S0U:年轻代中 To Survivor 目前已使用空间(单位 KB); S1U:年轻代中 From Survivor 目前已使用空间(单位 KB); EC:年轻代中 Eden 的容量(单位 KB); EU:年轻代中 Eden 目前已使用空间(单位 KB); OC:老年代的容量(单位 KB); OU:老年代目前已使用空间(单位 KB); MC:元空间的容量(单位 KB); MU:元空间目前已使用空间(单位 KB); YGC:从应用程序启动到采样时年轻代中 gc 次数; YGCT:从应用程序启动到采样时年轻代中 gc 所用时间 (s); FGC:从应用程序启动到采样时 老年代(Full Gc)gc 次数; FGCT:从应用程序启动到采样时 老年代代(Full Gc)gc 所用时间 (s); GCT:从应用程序启动到采样时 gc 用的总时间 (s)。 查看堆内存的初始化信息以及堆内存的使用情况 jmap -heap pid 同时还可以生成dump文件来进行详细分析 jmap -dump:live,format=b,file=heap-dump.bin pid 查看线程的堆栈信息 jstack pid
dump文件可以下载下来进行分析,也可以直接使用liunx上的jdk的
1、在线分析,启用服务,访问http://ip:7000查看分析结果
jhat -J-Xmx512m heap-dump.bin
2、下载到本地,使用JVisualvm,是 JDK 内置的可视化性能诊断工具(双击运行,文件,装入堆dump文件)
PS:通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后进行分析。
在大量使用反射、动态代理、CGLib等ByteCode框架、动态生成JSP以及OSGi这类频繁自定义ClassLoader的场景都需要虚拟机具备类卸载的功能,以保证永久代不会溢出:-verbose:class和-XX:+TraceClassLoading
图形工具
JVisualvm(看上面)
JProfiler (性能诊断利器 JProfiler 快速入门和最佳实践)
后记
Linux常用运维命令整理暂时记录到这,后续再进行补充;
参考如下:
https://github.com/Snailclimb/JavaGuide/blob/master/docs/operating-system/linux.md
https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/手把手教你定位常见Java性能问题.md
版权声明
捐献、打赏

支付宝

微信
交流群


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!