企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # Linux常用命令操作 ## 一:Linux下tomcat服务的启动、关闭与错误跟踪 使用**PuTTy**远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 切换到tomcat主目录下的bin目录 ```shell > cd usr/local/tomcat/bin ``` ### 启动tomcat服务 * 方式一:直接启动 ```shell > ./startup.sh ``` * 方式二:作为服务启动 ```shell > nohup ./startup.sh & ``` * 方式三:控制台动态输出方式启动 ```shell > ./catalina.sh run ``` 动态地显示tomcat后台的控制台输出信息,`Ctrl+C`后退出并关闭服务 **解释:** 通过方式一、方式三启动的tomcat有个弊端,当客户端连接断开的时候,tomcat服务也会立即停止,通过方式二可以作为linux服务一直运行 通过方式一、方式二方式启动的tomcat,其日志会写到相应的日志文件中,而不能动态地查看tomcat控制台的输出信息与错误情况,通过方式三可以以控制台模式启动tomcat服务, 直接看到程序运行时后台的控制台输出信息,不必每次都要很麻烦的打开catalina.out日志文件进行查看,这样便于跟踪查阅后台输出信息。 tomcat控制台信息包括log4j和System.out.println()等输出的信息。 ### 关闭tomcat服务 ```shell > ./shutdown.sh ``` ### tomcat运行时jvm内存分配 * ⑴ 开发环境下在myeclipse中配置 ~~~ -Xms256m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=128m -XX:PermSize=512m -XX:MaxPermSize=512m ~~~ * ⑵ 线上环境(直接通过catalina或startup命令行的方式启动) ①Linux下:catalina.sh `# OS specific support. $var _must_ be set to either true or false.在该注释之后加下面一行` ~~~ JAVA_OPTS="-server -Xms256m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=128m -XX:PermSize=512m -XX:MaxPermSize=512m" ~~~ ②Windows下:cattalina.bat ~~~ rem Guess CATALINA_HOME if not defined 在该注释之后加下面一行 set JAVA_OPTS=-Xms256m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=128m -XX:PermSize=512m -XX:MaxPermSize=512m ~~~ ## 二:Linux 下的一些常用命令解释: ### `pwd` 显示当前的工作目录(pwd:print working directory) ### `ls` 显示当前目录内容(list) ### `ls|more` 分屏显示("|"为管道符,将前一个命令结果传递给后面的命令,more表示分屏) ```shell > ls /usr>test01/abc.txt ``` 将指定目录的内容追加到test01目录下的abc.txt文本文档中 ~~~ ls -l #显示长格式,简写ll,主要看文件的名,大小,权限等 ls -a #显示隐藏文件 ~~~ ### `cd` 改变当前工作目录 ```shell > cd /usr #转到指定目录 > cd usr #转到指定目录的子目录 > cd .. #返回到上一级目录 > cd ~ #返回到主目录 ``` ### `clear` 清屏 ### `cat` 显示文件内容 ```shell > cat file|more #分屏显示文件内容(先显示文件内容,再将结果内容传给后一个命令分屏) > cat file|grep abc #显示包含字符abc的文件内容(先显示文件内容,再将结果内容传给后一个命令搜索,grep具有搜索功能) cat > catalina.out #清空日志内容 ``` ### `touch` 创建新文件 ### `mkdir` 创建新目录 ### `rm` 删除文件或目录 ```shell > rm file.txt #删除文件 > rm -rf test01 #删除不为空的目录(参数r:递归recursion,f:强制force) ``` ### `rmdir` 删除空目录 ### `cp` 复制文件 ```shell > cp src.txt dest.txt ``` ### `mv` 移动文件 ```shell > mv abc.txt def.txt #改名 > mv test01 test02 #改目录名 > mv test #相当于mv t+(按Tab键),tab键有查找补充命令功能。 ``` ### `chmod` 改变权限模式 ```shell > chmod +x catalina.sh #为catalina.sh加可执行的权限(参数x:执行execute)。linux下的文件是否可执行取决于文件属性,不看扩展名。 > chmod a+r catalina.out #将文件 catalina.out 设为所有人皆可读取。(参数a:所有人all) > chmod ugo+r catalina.out #也是将文件 catalina.out 设为所有人皆可读取。(参数u:档案拥有者user,g:group群组,o:other其他) ``` ### `vi` Linux下的一个简单编辑器 ```shell > vi .bash_profile #打开Linux的用户级初始文件,:wq保存退出,:q!不保存退出 ``` ### `tail` 显示文件尾部内容 ```shell > tail -f ./catalina.out #将文件最尾部内容显示在屏幕上,并不断刷新显示,按ctrl+c或delete退出。 ``` ### ` netstat、lsof` 查看网络端口与进程号 ① 直接查看指定端口的进程pid ```shell > netstat -anp|grep 8080 ``` ~~~ # 结果为: 协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:80 0.0.0.0:8080 LISTENING 5144/java ~~~ ② 直接查看指定端口的进程pid ```shell lsof -i:8080 ``` ~~~ # 结果为 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME java 5144 root 33u IPv6 127800 TCP *:8080 (LISTEN) ~~~ 则5144为8080这个端口的tomcat进程的pid,然后就可以kill这个进程: ```shell kill -9 5144 ``` 对比Windows下`netstat`命令: ```shell > netstat -ano|findstr 8080,taskkill -f -pid 5144 #(f:force强制) ``` ### `ping` 查看网络是连通 ```shell > ping 127.16.8.66 #查看当前机器与目录机器是否能正常通信(主要是看TCP/IP协议是否正常) ``` ### `ipconfig` 查看ip地址 ```shell > ipconfig -all #可以看到各个网络适配器(本地网卡、无线网卡)的IP地址和MAC地址 ``` ### `ps` 查看程序活动进程 ```shell > ps -ef |grep tomcat #查看是否已经有tomcat在运行了,如果有则将其进程杀死 ``` ~~~ #结果为: sun 1540 1 0 10:21 pts/1 00:00:06 /java/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed -classpath :/java/tomcat/bin/bootstrap.jar:/java/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/java/tomcat -Dcatalina.home=/java/tomcat -Djava.io.tmpdir=/java/tomcat/temp org.apache.catalina.startup.Bootstrap start ~~~ **Bootstrap start** 说明tomcat已经正常启动,则 1540 就为进程号 pid = 1540,然后就可以kill这个进程: ```shell > kill -9 1540 ``` 对比Windows下`tasklist`命令: ```shell > tasklist | findstr tomcat,taskkill -f -pid 5144 ``` ### `telnet` 测试远程端口是否连通 ```shell > telnet 10.4.200.114 1433 ``` ①端口通畅的情况 ~~~ Trying 10.4.200.114... Connected to 10.4.200.114 (10.4.200.114). Escape character is '^]'. ~~~ ②端口不通的情况 ~~~ Trying 10.4.200.114... ~~~ 如果能ping通,但端口不通,说明有可能被防火墙禁用了该端口 **解决办法:** linux下:查看防火墙: ```shell > iptables –L ``` 即时生效,重启后失效。 (开启: `service iptables start` ,关闭: `service iptables stop` ) 设置防火墙:setup (乱码) 解决Putty工具乱码:查看Linux系统当中使用的字符集echo $LANG $LANGUAGE,选择菜修改设置(change settings)--->转换(translation)-->选utf-8-->应用(apply) win7下防火墙开放端口方法:控制面板--系统和安全---windows防火墙---高级设置--入站规则--新建规则-->添加1433端口。 ### `df` 查看磁盘空间(diskfree) ```shell > df -lh /usr/local ``` ### `du` 查看已使用空间(diskused) ```shell > du -h /usr > du -h --max-depth=1 #查看文件夹大小 ``` ### `top` Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 ```shell > top -s #查看内存使用情况 > top -s | grep java #查看java进程的信息 ``` ### `tar、zip`  1. `tar.gz`这种格式是Linux下使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。 ```shell > tar -zcvf archive_name.tar.gz directory_to_compress #压缩一个目录 > tar -zxvf archive_name.tar.gz #解压缩到当前目录下 > tar -zxvf archive_name.tar.gz -C /usr/temp/ #解压缩到指定目录下 ``` ~~~ 参数解释: -z -gzip 调用gzip对tar归档文件进一步压缩成tar.gz格式,或者对tar.gz格式完成解压缩 -x -extract 解压缩已归档的指定(或所有)文件 -c -create 创建新的归档文件 -v -verbose 生成详细输出 -f -file 指定归档文件名 -r 向归档文件末尾追加文件 -C 改变目录 ~~~  2. 压缩/解压zip格式 ```shell > zip file.zip ./directory/* #压缩指定目录下的所有文件及目录 > unzip file.zip -d ./test #解压缩到指定目录 > unzip file.zip #解压缩到当前目录 > unzip -v largefile.zip #只查看压缩包的内容,并不解压缩 ``` ## 三:Linux与Windows的几点区别: ```shell > echo $PATH #回显Linux环境变量PATH的值,Linux下的环境变量必须大写 > echo %path% #回显Windows环境变量path的值 > export PATH=/usr/local/tomcat #修改设置Linux环境变量PATH的值(临时),Linux文件系统路径是斜杠 > set path=D:\Program Files\tomcat #修改Windows环境变量path的值(临时),Windows文件系统路径是反斜杠 ``` Linux:查看、修改Linux下的用户级初始文件(**.bash_profile**),它是个隐藏文件(永久) Windows:计算机-->属性-->高级-->环境变量;查看、修改环境变量(永久) ### Linux命令搜索用grep: ```shell > netstat -anp|grep 8080 ``` ### Windows Dos命令搜索用findstr: ```shell > netstat -anp|findstr 8080 ``` ### Linux下Tomcat的启动、关闭、杀死进程 ```shell > `cd /java/tomcat` > bin/startup.sh #启动tomcat > bin/shutdown.sh #停止tomcat > tail -f logs/catalina.out #看tomcat的控制台输出; ``` 看是否已经有tomcat在运行了: ```shell > `ps -ef |grep tomcat` ``` 如果有,用`kill`: ```shell > kill -9 pid #pid 为相应的进程号 ``` 例如 ` ps -ef |grep tomcat` 输出如下 ```shell sun 5144 1 0 10:21 pts/1 00:00:06 /java/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed -classpath :/java/tomcat/bin/bootstrap.jar:/java/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/java/tomcat -Dcatalina.home=/java/tomcat -Djava.io.tmpdir=/java/tomcat/temp org.apache.catalina.startup.Bootstrap start ``` 则 5144 就为进程号 `pid = 5144`,`kill -9 5144` 就可以彻底杀死tomcat 直接查看指定端口的进程pid: ```shell > netstat -anp|grep 9217` tcp 0 0 :::9217 :::* LISTEN 26127/java` ``` 则26127为9217这个端口的tomcat进程的pid,然后就可以kill这个进程: ```shell > kill -9 26127 ``` 然后再启动tomcat即可 ### linux下实时查看tomcat运行日志  1. 实时查看tomcat运行日志,先切换到: ```shell > cd tomcat/logs > tail -f catalina.out > Ctrl+c #是退出tail命令。 ```  2. 通过关键字搜索查看日志: ```shell > cat jeewx-2015-09-20.log | grep 验证码 ```  3. 查看固定时间日志: ```shell > cat jeewx-2015-09-20.log | grep '2015-09-20 18:50:15' ```  4. 查看最近50行日志: ```shell > tail -n 50 -f catalina.out ```