作为web程序员,该掌握的 linux 命令有哪些,稍微高级点的? - 刘志军的回答 - 知乎 
答案中提到一本书:《The Linux Command Line》,中文版叫《快乐的 Linux 命令行》
 
 
以下为查看 tomcat 日志(在 Jenkins 上构建项目时)的命令:
1、cd /usr/local/apache-tomcat-8.0.47/logs/(进入日志文件夹)
2、ll -rthl(查看最近更新的文件的详细信息)
(注:相关命令有 ll、ls,可参考:https://www.cnblogs.com/zhaosunwei/p/7069029.html
3、tail -f catalina.out ,查看日志内容(开始输入日志信息)
4、ctrl+c:tail命令,停止输出日志信息
 
vi 文件之后,按 i 进入编辑模式,按 esc 键退出编辑模式,进入命令模式
 
退出 vim 编辑器(注意各种退出命令之前都有一个冒号):
按Esc键,退出编辑模式,进入命令模式。然后可以键入
>:q to quit(short for:quit)
>:q!退出而不保存(短接:退出!)
>:wq写和退出(认为写和退出)
>:wq!即使文件只有读取权限(如果文件没有写入权限:强制写入),也可以写入和退出。
>:x写和退出(类似于:wq,但如果没有更改就不会写)
>:qa to quit all(缩写:quitall)

当您按:,a:将出现在屏幕的底部。

或者您可以按Esc ZZ(Esc Shift Z Shift Z)写入/保存文件被更改,然后退出。

或者如果你不想保存更改,可以使用ZQ。

Vim有广泛的帮助,所以键入Esc:helpReturn,你会有你的所有答案,甚至一个整洁的教程。
注:如果在没有进入编辑模式的情况下(即,只是 vi 文件,没有按 i,则无需按 esc 键再按 :q! 键退出了)
 
exit   退出当前终端会话(断开 xshell 和服务器的连接)
 
cd ..    返回上级目录
注意:cd 和 .. 之间有一个空格
 
定位 tomcat 中 Catalina.log 中定位错误信息的方法:
1、定位指定异常(具体到哪一行)
2、查询异常附近的信息
https://blog.csdn.net/u010648555/article/details/78073104(内容和排版都非常好)
 
输出 catalina.out 文件中,6132300 行及之后的所有数据到 tmp 文件夹的 0508.txt 文件
cat -n catalina.out|tail -n +6132300  > /tmp/0508.txt
注:
> 表示将信息输出
/tmp 中的 / 表示根目录
/tmp 文件夹是系统自带的
0508.txt 文件时新建的(名字随便起)
 
linux 下进程、端口相互查看方法:
通过进程名查端口:
1、先查看进程pid
ps -ef | grep 进程名

2、通过pid查看占用端口
netstat -nap | grep 进程pid
通过端口查进程:
<wiz_code_mirror>

netstat -nap | grep 端口号
tab 键有补位的功能
 
pwd 查看当前目录
 
文件查找 文件搜索 find:
例如:
find / .name 'nginx.conf'
注:一定要用英文引号,否则查不到,且不报任何错误
 

 
jenkins 上登记项目的配置信息中的 execute shell,我自己加了一些注释:
// jenkins 已经连接了 gitlab,并将代码打包
// scp 跨服务器复制,将打包后的代码,复制到目标服务器的特定位置
scp -r /root/.jenkins/workspace/xx_xx_system/target/xx-xx-system-1.0.0-SNAPSHOT.jar root@xx.xx.xx.xxx:/usr/wyl/xx-xx-system
// ssh 切换(操作的)服务器 v/null 2>&1 存疑 远程执行的内容在“<< eeooff ” 至“ eeooff ”之间,在远程机器上的操作就位于其中
ssh root@xx.xx.xx.xxx> /dev/null 2>&1 << eeooff
// 进入文件夹
cd /usr/wyl/xx-xx-system
// 查原 jar 包进程
pid=\`ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print \$2}'\`
// 判断,若原始进程存在,则kill掉,重新启动
if [ -n "\$pid" ];
then
// 打印(echo)进程名称
echo "kill -9 pid:" \$pid
kill -9 \$pid
// 判断结束标识
fi
// 给新加的jar包,赋所有权限(777)
chmod 777 /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar
// java -jar 启动 jar 包 使用 nohup + 命令 + $ 的方式使 jar 包能一直在后台运行,否则关闭操作窗口之后,该进程会停止。其中,nohup 是不挂起的意思
nohup java -jar /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar >/dev/null 2>&1 &
// 查看进程,确定是否启动成功
npid=\`ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print \$2}'\`
// 判断,若新进程存在
if [ -n "\$npid" ];
then
// 打印(echo)进程名称
echo "new pid:" \$npid
fi
// 在结束
远程命令“eeooff”之前,加 exit 退出远程节点 exit
eeooff
关于 >/dev/null 2>&1 比较好的文章:
关于 eeooff 在以下文章的一开始有比较好的解释:
 
 
最终在服务器的xx项目的同目录下,创建了 restart.sh 文件,内容如下:(更新此段代码,错代码保存    \$2 中的 \ 不应该存在    if [ -n "\$pid" ]?    重视机器说的话   知道有 xshell 编程之后,心理就没有陌生感了,因为学过其他的编程语言)
cd /usr/wyl/xx-xx-system
pid=\`ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print \$2}'\`
if [ -n "\$pid" ];
then
echo "kill -9 pid:" \$pid
kill -9 \$pid
fi
chmod 777 /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar
nohup java -jar /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar >/dev/null 2>&1 &
npid=\`ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print \$2}'\`
if [ -n "\$npid" ];
then
echo "new pid:" \$npid
fi
 
正确的脚本代码:
cd /usr/wyl/xx-xx-system
pid=$(ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
if [ -n "\$pid" ];
then
echo "kill -9 pid:" $pid
kill -9 $pid
fi
chmod 777 /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar
nohup java -jar /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar >/dev/null 2>&1 &
npid=$(ps -ef | grep /usr/wyl/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
if [ -n "\$npid" ];
then
echo "new pid:" $npid
fi
迁移服务器之后更新的脚本:
cd /usr/local/xx-xx-system
pid=$(ps -ef | grep /usr/local/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
if [ -n "\$pid" ];
then
echo "kill -9 pid:" $pid
kill -9 $pid
fi
chmod 777 /usr/local/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar
nohup java -jar /usr/local/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar >/dev/null 2>&1 &
npid=$(ps -ef | grep /usr/local/xx-xx-system/xx-xx-system-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
if [ -n "\$npid" ];
then
echo "new pid:" $npid
fi
用新的 jar 包覆盖原 jar 包之后,只需执行以下命令即可:
sh /usr/local/xx-xx-system/restart.sh
 
在 idea 中,操作步骤:
重新部署 spring boot 项目(此处针对项目 xx-xx-system)
1、打包(Maven:clean、package),生成新的 jar 文件
2、将项目 xx_xx_system 的 target 目录下的 xx-xx-system-1.0.0-SNAPSHOT.jar 文件拷贝到以下位置,将原来的 jar 包覆盖
(Tools → Deployment → Browse Remote Host)
3、在服务器执行命令:(Tools → Start SSH session → 可信主服务器)
sh /usr/wyl/xx-xx-system/restart.sh
以执行脚本 restart.sh,重启服务器
 
 
 
 

 
对于 spring boot 项目,在服务器上使用 shell 命令重启 jar 包:
 
[root@iz2zec3dge6rwzdxgdl48vz ~]# ps -ef|grep java
root 2429 1 0 Sep26 ? 00:22:16 java -jar yy-yy-manage-1.0.0-SNAPSHOT.jar
root 5096 5072 0 17:20 pts/3 00:00:00 grep --color=auto java
root 6026 1 0 Sep28 ? 00:19:07 java -jar aa-aa-manage-1.0.0-SNAPSHOT.jar
root 21019 1 0 Oct10 ? 00:06:54 java -jar xx-xx-system-1.0.0-SNAPSHOT.jar
root 22118 1 0 Sep17 ? 00:32:27 java -jar aa-bb-server-1.0.0-SNAPSHOT-1.jar
root 22167 1 0 Sep17 ? 00:32:24 java -jar aa-bb-server-1.0.0-SNAPSHOT-2.jar
[root@iz2zec3dge6rwzdxgdl48vz ~]# kill -9 21019
[root@iz2zec3dge6rwzdxgdl48vz ~]# ps -ef|grep java
root 2429 1 0 Sep26 ? 00:22:16 java -jar yy-yy-manage-1.0.0-SNAPSHOT.jar
root 5099 5072 0 17:21 pts/3 00:00:00 grep --color=auto java
root 6026 1 0 Sep28 ? 00:19:07 java -jar aa-aa-manage-1.0.0-SNAPSHOT.jar
root 22118 1 0 Sep17 ? 00:32:27 java -jar aa-bb-server-1.0.0-SNAPSHOT-1.jar
root 22167 1 0 Sep17 ? 00:32:24 java -jar aa-bb-server-1.0.0-SNAPSHOT-2.jar
[root@iz2zec3dge6rwzdxgdl48vz ~]# cd /usr/wyl
[root@iz2zec3dge6rwzdxgdl48vz wyl]# ll
total 1808
drwxr-xr-x 4 root root 4096 Sep 28 18:23 aa-aa-manage
drwxr-xr-x 3 root root 4096 Sep 26 11:31 yy-yy-manage
drwxr-xr-x 3 root root 4096 Oct 8 10:59 xx-xx-system
drwxr-xr-x 3 root root 4096 Oct 15 14:58 java
drwxr-xr-x 4 root root 4096 Sep 5 11:25 mysql
drwxr-xr-x 4 root root 4096 Sep 6 17:00 private_cloud
drwxr-xr-x 5 root root 4096 Sep 7 16:06 aa_bb_server
drwxr-xr-x 4 root root 4096 Oct 15 16:15 redis
drwxrwxr-x 6 root root 4096 Oct 15 16:16 redis-4.0.7
-rw-r--r-- 1 root root 1729488 Oct 15 16:13 redis-4.0.7.tar.gz
drwxr-xr-x 3 root root 4096 Sep 5 08:47 ST_Get_UUID_Tool_Linux
-rw-r--r-- 1 root root 76923 Sep 4 11:16 ST_Get_UUID_Tool_Linux.zip
[root@iz2zec3dge6rwzdxgdl48vz wyl]# cd xx-xx-system/
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]# ll
total 49668
-rwxrwxrwx 1 root root 46802373 Oct 15 16:38 xx-xx-system-1.0.0-SNAPSHOT.jar
drwxr-xr-x 3 root root 4096 Oct 15 10:43 logs
-rw------- 1 root root 4044093 Oct 15 17:20 nohup.out
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]# nohup java -jar xx-xx-system-1.0.0-SNAPSHOT.jar &
[1] 5102
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]# nohup: ignoring input and appending output to ‘nohup.out’

[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]#
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]#
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]# ps -ef|grep java
root 2429 1 0 Sep26 ? 00:22:16 java -jar yy-yy-manage-1.0.0-SNAPSHOT.jar
root 5102 5072 99 17:22 pts/3 00:00:37 java -jar xx-xx-system-1.0.0-SNAPSHOT.jar
root 5149 5072 0 17:22 pts/3 00:00:00 grep --color=auto java
root 6026 1 0 Sep28 ? 00:19:07 java -jar aa-aa-manage-1.0.0-SNAPSHOT.jar
root 22118 1 0 Sep17 ? 00:32:27 java -jar aa-bb-server-1.0.0-SNAPSHOT-1.jar
root 22167 1 0 Sep17 ? 00:32:24 java -jar aa-bb-server-1.0.0-SNAPSHOT-2.jar
[root@iz2zec3dge6rwzdxgdl48vz xx-xx-system]#
 

 

nginx

 
查找 nginx.conf 文件的位置:
find / .name 'nginx.conf'
 
修改 nginx.conf 文件之后,检查该配置文件是否正确:
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
参考:
介绍下检查nginx配置文件是否正确的方法,在nginx查检配置文件,主要是用nginx -t命令,
如何检查配置是否正确呢?用nginx -t命令就好了。
一、nginx的几个命令参数Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。
Nginx 的参数包括:可以这样使用 /usr/local/nginx/sbin/nginx -参数
-c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
-v:显示 nginx 版本号。
-V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。
二、检测新的conf文件
测试当前nginx.conf文件是否正确,使用命令:
复制代码 代码示例:
[root@localhost]/usr/local/nginx/conf# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

得到如此结果,说明新conf文件没有错误。
如果有错,它会提示在哪行出了错,再修改错误即可。

作者:金星show
链接:https://www.jianshu.com/p/26d562bf69bb
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
nginx 启动、重启、关闭命令:
 
nginx 启动命令:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
 
查看 nginx 进程(其中 master 为主进程):
ps -ef|grep nginx
 
端口号,要在阿里云添加安全组
 
配置文件新添内容:
<wiz_code_mirror>

# 该段为新加部分,为了给xx系统的图片做代理
server {
listen 9016;
server_name xx.xx.xx.xxx;
root /xx_xx_system/upload_file;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

Linux 使用记录的更多相关文章

  1. Arch Linux 安装记录

    Arch Linux 安装记录 基本上参考wiki上的新手指南,使用arch 2014.6.1 iso安装 设置网络 有线网络 Arch Linux 默认开启DHCP. 静态ip 首先关闭DHCP:s ...

  2. Linux巩固记录(3) hadoop 2.7.4 环境搭建

    由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了 以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上 ...

  3. Linux(2)---记录一次线上服务 CPU 100%的排查过程

    Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过 ...

  4. 最近的linux工作记录

    最近的linux工作记录 最近公司走了一些同事,部分服务器交到了我的手里,总结一些常用的操作 注:大写的字符串一般是用来占位,需要替换 创建账户和使用密钥对登陆 1,账户系列 useradd 选项 用 ...

  5. Linux下记录所有用户的登录和操作日志

    Linux下记录所有用户的登录和操作日志   一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的 ...

  6. Linux 入门记录:二十、Linux 包管理工具 YUM

    一.YUM(Yellowdog Updater, Modified) 1. YUM 简介 RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题.很多时候安装一个软件首先需要安装 1 个 ...

  7. Linux问题记录——主机名变成了bogon

    Linux问题记录——主机名变成了bogon 摘要:本文主要记录了主机名变成bogon的原因以及解决办法. 问题重现 主机名在一次登录后,变成了bogon,此后每次登录Linux系统时都是bogon. ...

  8. Linux学习记录

    ---恢复内容开始--- linux与unix的关系 linux是借鉴了unix设计思想,也称linux位类unix系统. Linux常用命令 1.命令基本格式 命令[选项][参数] 注意:个别命令不 ...

  9. 在Linux下记录所有用户的登录和操作日志

    一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通 ...

  10. Linux中记录终端(Terminal)输出到文本文件(转载)

    一,如何把命令运行的结果保存到文件当中? 这个问题太简单了,大家都知道,用 > 把输出转向就可以了 例子: [lhd@hongdi ~]$ ls > ls.txt [lhd@hongdi ...

随机推荐

  1. Java学习笔记之基础语法(数据类型)

    8种基本数据类型    整型:   byte[1字节]          short[2字节]        int[4字节]         long[8字节]      1,四种整型之间的区别:申 ...

  2. mssql数据库提权

    1.关于 “xp_cmdshell” “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写 ...

  3. Go 零基础 30 min 入门

        不知不觉用 Go 开发也两年多了. 筹备点经验汇总, 方便后面的同学能快速上手.  提纲     1. Go 安装     2. Go ide 搭建     3. Go modules 模块管 ...

  4. Linux power supply class(1)_软件架构及API汇整【转】

    1. 前言 power supply class为编写供电设备(power supply,后面简称PSY)的驱动提供了统一的框架,功能包括: 1)抽象PSY设备的共性,向用户空间提供统一的API. 2 ...

  5. 近万字案例:Rancher + VMware PKS实现全球数百站点K8S集群管理

    Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的.基于云的技术平台,以更好地应对业务挑战.曾连续3年提名CRN,并且在2012 ...

  6. Ribbon - Customizing the Ribbon Client

    自定义Ribbon算法 自定义Ribbon 官网文档链接    Ribbon github源码地址 <!--ribbon配置--> <dependency> <group ...

  7. redis入门(一)

    目录 redis入门(一) 前言 特性 速度快 简单稳定 丰富的功能 历史 历史版本 安装与启动 安装 数据类型与内部编码 数据结构 内部编码 常用API与使用场景 常用命令 字符串 列表 哈希 集合 ...

  8. [正确配置]win7 PL/SQL 连接Oralce 11g 64位

    PL/SQL 版本号:15.0.5.1710 32位 win7 64位系统 instantclient 12.1 32位,PL/SQL不支持64位 关键问题 1.Not logged on 2.没有c ...

  9. day19作业

    1.什么是对象?什么是类? ​ 对象是特征和功能的结合体 ​ 类是一系列对象相同的特征和技能的集合体 2.绑定方法的有什么特点 ​ 绑定方式是由对象来调用类内部的函数,特点是会把对象当作第一个参数传入 ...

  10. Java基础(八)对象包装器与自动装箱

    1.对象包装器 有时候,需要将int这样的基本类型转换为对象.所有的基本类型都有一个与之对应的类.通常,这些类被称为包装器(wrapper). 这些对象包装类分别是:Integer.Long.Floa ...