作为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. Python制作有道翻译小工具

    该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使 ...

  2. JVM系列一:JVM内存模型

    今天起开始总结JVM.自己也看了好多JVM相关的知识,在此做个总结. 打算分为五个部分来讲:JVM内存模型.JVM类加载机制.JVM垃圾回收机制.JVM启动参数设置及优化.JVM其他相关. 今天首先来 ...

  3. Cocos2d-x 学习笔记(11.4) ScaleTo ScaleBy

    1. ScaleTo ScaleBy 对node进行缩放.ScaleBy是ScaleTo的子类. 1.1 成员变量 create方法 ScaleTo ScaleBy 成员变量一样: float _sc ...

  4. springboot学习(二十二)_ 使用@Constraint注解自定义验证注解

    最近项目在使用如@NotNull @Max 等配合@vaild 注解进行验证传过来的参数校验,然后通过统一异常处理,直接返回给前端,不用在业务代码中对这些参数进行校验.但是官方提供的并不能全部满足项目 ...

  5. ubuntu 虚拟机设置静态ip

    $ sudo vim /etc/network/interfaces auto ens33   # 使用的网络接口,之前查询接口是为了这里     iface ens33 inet static    ...

  6. 百万年薪python之路 -- 文件操作

    1.文件操作: f = open("zcy.txt" , mode="r" , encoding="UTF-8") open() 打开 第一 ...

  7. Java描述设计模式(16):代理模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在电商高速发展的今天,快递的数量十分庞大,甚至出现了快递代理行业,简单的说就是快递的主人没有时间收快递,会指定一个 ...

  8. 基于MVC的RESTful风格的实现

    基于MVC的RESTful风格的实现 1.RESTful风格阐述 REST服务是一种ROA(Resource-Oriented Architecture,面向资源的架构)应用.主要特点是方法信息存在于 ...

  9. (记录)Ubuntu系统中运行需要导入jar包的Java程序

    在学习Redis的过程中,在学到Redis客户端Jedis的时候,考虑到能不能在ubuntu下用Vim编写Java程序并且能够运行呢? 于是,首先在网上调研了一番用Vim写Java程序的可实现性. 相 ...

  10. 源码学习系列之SpringBoot自动配置(篇一)

    源码学习系列之SpringBoot自动配置源码学习(篇一) ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属 ...