作为一个程序员,操作linux服务器肯定是必备的一个技能,工作的时候可能需要你去部署包到linux服务器上,或者说去服务器上看日志,调优,配置,看数据库等,下面是我笔记里面常用的一些linux的命令,并且有些结合使用场景来说,我的服务器是阿里云上的centos7系统,我一般用xshell去管理我的服务器,同时有个很好的xftp可以实现可视化,可上传下载,xshell可以用rz上传sz下载命令,但是得安装插件yum install -y lrzsz 如果想学学linux的命令还是多多用命令去实现吧。
这里说下阿里云服务器的一个特点,阿里云服务器有个安全规则,就是开放某个端口,假设当我们想要配置一个redis对外访问,
redis使用6379的一个端口,那么我们就需要有3步,1修改redis允许远程访问 2 防火墙开端口6379(如果防火墙没关)3阿里云安全规则开放端口6379。对外开放端口的话是有风险的,本人之前就有过事故,自己的服务器部署了个项目,最近发现怎么跑不动了,查了下top,卧槽有个进程占99%cpu,查了下发现是被人挖矿了,又是杀挖矿进程,杀开启挖矿的进程,再清除脚本才解决的,最后发现是reids 密码不安全被黑进来的。是一个教训,所以说正式环境还是封端口,本地调用吧。实在想开放,就改个端口号,密码复杂点,例如redis 6379 改成 6378什么的。
常用命令
Linux目录结构: 只有1个目录,根目录
usr:相当于program files
etc:存放系统配置文件
root:系统管理员默认目录(用root权限登录就是进入这个目录,root是最大权限的账号,可以操作服务器任何操作,所以一般不会把这个账号给程序员开发用,而是创建其他的用户账号,home里面的目录就是存放其他用户)
home:存放其他用户的目录
pwd: 打印当前目录,例如:/root/tomcat
cd / : 切换到根目录
ll : 查看当前目录下的内容
linux有2种用户,一种管理员root,另外一种普通: zhangsan lisi
Root用户登录到linux默认所在的目录是 /root/
其他用户bin登录到linux默认所在的目录是 /home/zhangsan/
1.1 查看目录结构
list :列出
ll :列出当前目录下的文件信息“ll”是“ls -l"的别名,"ll"和“ls -l”的功能是一样的。(这个是我使用linux经常使用的命令,可以查看当前目录下的所有文件信息,并且包含文件权限,操作日期,文件名等)
ls -al :列出当前目录下的文件信息(包括隐藏文件,特殊目录)
ll /bin/ :列出根目录下bin目录下的文件信息
ls显示当前目录的文件 ll是显示当前目录的详情
1.2 切换目录命令cd
touch 1.txt :在当前目录创建一个文件1.txt
clear :清除屏幕(如果你觉得太多信息了,可以clear下,世界都清净了)
cd ~ 跳到自己的 home 目录 :
cd / 跳到指定目录
cd - 返回上一次工作目录
cd .. 跳到目前目录的上上两层
cd ./ 调用下级文件或者文件夹(当我们在/root中,我们想进去里面的tomcat目录,我们可以cd ./tomcat,而不需要cd /root/tomcat)
1.3 创建目录
pwd:打印工作目录
mkdir: 创建目录
mkdir a :当前目录下创建文件夹a
mkdir /root/b :在根目录下的root下创建目录b
mkdir -pv /root/c/e/d :在根目录下的root下创建目录结构c/e/d
1.4 文件浏览命令
cat命令: 如果文件中的内容很少,一页之内可以显示完毕
cat /root/文件名称 (这里想到一个操作就是我们导入mysql的sql文件的时候,可以使用cat name.sql | mysql -uroot -p****** 去把库导进来或者表)
more命令: 如果文件中内容比较多,一页之内显示不完
more 文件名称
less 命令: 如果文件中内容比较多,一页之内显示不完
less -mN 文件名称,如下为less扩展
less详解:https://www.runoob.com/linux/linux-comm-less.html
less比more多了搜索功能
tail 命令: 查看文件末尾内容
tail -10 /root/install.log 查看install.log文件中后10行内容
(这里有个应用场景是查看服务器的日志,或者说项目运行日志,并且该日志是‘’动态‘’的,跟我们控制台有点像,从而达到测试的一个目的,因为是查看文件末尾的内容,你每次增加了日志,就会往下跳)
1.5 文件管理
cd /root/
复制文件
cp install.log install02.log
cp -b install.log install02.log :如果覆盖文件时,可以将源文件做一个备份
cp ./install.log ../ : 将当前目录下的install.log复制到父级目录
cp /root/install.log /bin/1.txt
:将/root下的install.log文件复制到根目录下的bin目录下的1.txt中
复制目录(无论是单层目录还是多层目录都可以复制):
cp -r ./a ./b
cp -r /root/a /root/z
mv剪切文件
mv /root/install.log /root/a/
重命名文件
mv /root/install.log /root/test.log
删除文件
rm -f 文件名称
rm -f /root/文件名称
删除目录
rm -rf 目录名称
rm -rf /root/目录名称
在某个目录下搜索文件/目录
find /root/ -name ‘in*’ :
在根目录下的root目录下寻找名称中包含in而且是以in开头的文件/目录
1.6 Vim编辑器
vim /root/1.txt :利用vim编辑器打开文件 ====> 录入 i (从一般模式转变为插入模式)
===>录入各种信息 ===>esc(从插入模式转换为一般模式)====>:wq(保存并退出)
(vim是一个非常复杂的一个模块,听说直接有本说讲vim的,我们一般就是使用vim操作文件内容,修改配置文件,例如操作tomcat的server.xml,nginx的nginx.conf)
1.7 系统命令
grep: 过滤任务 经常和其他命令联合使用
grep -i 名称
cat /root/install.log
cat /root/install.log | grep -i mysql :查看install.log文件中包含mysql内容信息
ps -ef :相当于任务管理器,对进程的一次查看
ps -ef | grep -i crond : 查看系统中crond的进程信息
(我们一般使用该命令去查某个进程,例如mysql,redis,第一个就是我们查到的启动的mysql,第二个则使我们调用这个搜索的进程,所以别以为怎么有两个mysql,同时也可以通关端口号去查进程来判断该端口被占用没有,另外有个很方便的命令,jps=>查询java运行的服务器,jar是springboot运行的,Bootstrap是运行的tomcat)
管道命令: 命令的一种使用方式
命令1 | 命令2
命令1的输出是命令2的输入
cat /root/install.log | grep -i mysql
ps -ef | grep -i crond
kill -9 端口号(我们想要关闭某个进程,可以先查他的端口号然后在用这个命令杀死)
压缩:tar cvf FileName.tar FileName
解压:tar xvf FileName.tar
命令1 && 命令2:执行命令1后执行命令2(例如我们运行tomcat然后查看tomcat运行情况我们可以 ./startup.sh && tail -f ../logs/catalina.out,其中./startup.sh是启动tomcat,tail -f ../logs/catalina.out是查看日志)
推荐文章:https://snailclimb.gitee.io/javaguide/#/docs/operating-system/linux