哇,膜拜,师父竟然懂HARAKIRI的意思(附Linux常用命令)

哇,膜拜,师父竟然懂HARAKIRI的意思

我在看服务器日志的时候,发现有好几行开头都写着HARAKIRI
还以为是什么机制,就去问了问AI,结果它也不懂,百度也没查到

就去问师父,他一下就说出,是切腹自杀的意思,是日语,牛哇牛哇

然后理解一下发现是系统的负载过大,跑不动了,然后线程自杀后释放资源又重启的过程
就有点像我们手机APP开太多,然后前面开的部分APP没反应卡住了,要重启一下就能接着使用

顺便放点前段时间记录的Ubantu服务器命令


连接服务器

不是Win自带的远程桌面连接!

法一 右键打开Git Bash 输入

ssh 用户名(默认root)@IP地址
e·g· ssh root@

法二 用可视化工具 推荐Xshell

工具在安装后,配置的用户密码可以不填
打开Xshell主界面, 点击菜单栏文件 --> 新建, 在默认的连接标签页中填写名称、主机信息

点击连接的子标签页 用户身份验证, 右侧方法选择Public Key
点击用户密钥所在行右侧的浏览按钮, 在弹出窗口中点击导入按钮

在文件对话框中选择私钥文件, 并点击打开确认选择
在用户密钥窗口中, 单击选中添加的私钥, 然后点击确定

在新建会话属性窗口点击右下方确定完成会话创建

(部署)更新服务器中Flask项目代码命令

  • cd workspace/unis-ai/ 进到项目中

  • git pull (从git服务器拉取代码到我们的服务器上)

  • sh run_uwsgi.sh stop

  • tail查看日志中进程状态
    (进程是否都已终结,可以看第[六]列的启动时间),确定所有子进程都stop后再下一步
    tail -f uwsgi.log 看日志文件,可实时监控文件,显示最新的内容 看到good bye(自定义的)就已经完全停止运行了 (自定义的)

  • sh run_uwsgi.sh start (重启服务)
    确认重启成功:start后记得稍等一会,至少20s,tail查看日志中进程状态(进程是否都已启动,看第[六]列的启动时间)以及主进程PID一致否

部署前提:

一定要前后端商量好接口的变动,本地测试都没问题了,才能部署到服务器上

或者后端的内容修改,一定要测试了确定没问题才能部署

重启完服务器,一定要记得测试API接口 一个就行

服务器挂掉时的处理

  • 先找挂掉的原因:
    tail -50 uwsgi.log 查看日志文件,查看报错内容
  • 要解决后再stop start
    stop后记得稍等一会,tail查看日志中进程状态

上传下载文件用sz rz


cat /proc/version
查看Linux版本信息、以及gcc的
cat requirements.txt
cat +文件名 可查看文件内容

sudo update-alternatives --config gcc
修改系统中的默认gcc版本
不过得先安装gcc的其他版本:
sudo apt install gcc-4.8

查看gcc版本:
gcc -v 或cat /proc/version 或gcc --version

tail -50 uwsgi.log
查看日志文件,不要vi!
1.命令格式:tail [必要参数] [选择参数] [文件]
2.命令功能:
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用来查看日志文件
3.命令参数:
-f 循环读取 不用跟数字
-n<行数> 显示行数 要跟个数字 50/-50都表示最后50行的内容,+50即开头50行
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, -quiet, -silent 从不输出给出文件名的首部
-s, -sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

vi 文件名
(vi命令尽量尽量不要用,tail平替日常查看日志,其他文件另说)
进入到这个日志文件中,可查看它能进行的操作参数,可进行 行编辑、翻页等操作,有快捷键

退出:看完按 :q 回车可安全退出

注意:若按Ctrl+Z退出来,vi进程还在运行,很危险
可以jobs -l 查看序列号
kill -9 序列号 -9是强制删除,可以不加
最后记得status看一下进程状态,没有vi才正常,不然很危险

ps -ef | grep wsgi
显示系统进程信息的命令:
grep命令的功能是查找,支持正则表达式!
中间的 | 是管道命令 即ps与grep同时执行
哇,膜拜,师父竟然懂HARAKIRI的意思(附Linux常用命令)_第1张图片

ps 有两个参数
ps -ef 是用标准的格式显示进程的、其格式如下(顺序一致)
哇,膜拜,师父竟然懂HARAKIRI的意思(附Linux常用命令)_第2张图片

UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数

ps aux 是用BSD的格式来显示、其格式如下
哇,膜拜,师父竟然懂HARAKIRI的意思(附Linux常用命令)_第3张图片

同ps -ef 不同的列有
USER //用户名
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);

  • //位于后台的进程组;
    

你可能感兴趣的:(服务器,linux,运维,服务器)