• 哇,膜拜,师父竟然懂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同时执行
    在这里插入图片描述

    ps 有两个参数
    ps -ef 是用标准的格式显示进程的、其格式如下(顺序一致)
    在这里插入图片描述

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

    ps aux 是用BSD的格式来显示、其格式如下
    在这里插入图片描述

    同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);

    • //位于后台的进程组;
      
      • 1
  • 相关阅读:
    Flutter快速入门学习(二)
    初识微信小程序之swiper和swiper-item的基本使用
    字符串中第二大的数字(遍历)
    R语言survminer包的ggsurvplot函数可视化生存曲线、conf.int参数指定添加生存置信区间、conf.int.style指定置信区间的形式
    java实现各种排序
    信息学奥赛一本通:1161:转进制
    OA系统源码
    FreeRTOS多任务管理
    SpringBoot 访问接口记录日志的保存和定时清理日志
    OpenFeign(案例代码)
  • 原文地址:https://blog.csdn.net/weixin_44412468/article/details/134272998