zoukankan      html  css  js  c++  java
  • Linux使用小笔记<进程操作篇>

    问题一: 查看哪个进程占用了哪个端口、以及杀掉进程

    1.查看占用端口: sudo lsof -i :80

    lsof 命令 是 list open files的意思 

      比如:

      lsof filename 显示打开指定文件的所有进程

      lsof -i 用以显示符合条件的进程情况(4、6、协议、:端口、 @ip )

    2. 根据PID杀掉进程: sudo kill 1000  (进程号)

    kill 命令 语法是 kill [信号或选项] PID(s)

      使用 kill -l 查看所有的信号

      比如杀掉一个进程是 kill SIGKILL PID 或者 kill -9 PID 这里的-9代表着 SIGKILL

    另外还有pkill命令 ,是用来杀掉匹配名字的进程,可以用用正则匹配名字

    还有killall 是杀掉所有同名的

    问题二:让进程在后台运行 


    开启终端执行一个较长的命令(或登录远程服务器执行命令),然后一关终端结果任务也终止了。但是我们的想法是让它在后台执行,而且关掉终端也不会终止。

    关掉终端会终止任务的原因:当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。所以解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

    解决命令:使用 nohup 或者 setsid

    一、nohup

    nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。可用">filename 2>&1"来更改缺省的重定向文件名。而在结尾 添加 ' & ' 这个字符可以让命令在后台运行

    例如:

    nohup python3 manage.py runserver .... &

    这个进程的父id仍然是这个终端的pid。

    二、setsid

    setsid ping www.ibm.com


    这个任务的父id是init进程的id 即 1,与上一个命令比较有所不一样。

    另外:这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一。

    例如

    (ping www.ibm.com &)

    会发现新提交的进程的父 ID(PPID)为1(init 进程的 PID),并不是当前终端的进程 ID。因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了。

    出处: http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

  • 相关阅读:
    单一职责原则
    23种设计模式
    微信小程序页面跳转
    【论文阅读】OrigamiNet:Weakly-Supervised, Segmentation-Free, One-Step, Full Page Text Recognition by learning to unfold
    【华为昇腾】DB_ResNet精度调优 Siammask性能调优 模型众筹项目复盘
    Ueditor 防止html过滤标签的操作
    海康摄像机rtsp地址格式官方最新版(2020)
    HLS协议解析
    解决帝国标题颜色颜色单引号问题
    帝国CMS动态页支持栏目导航标签,万能标签,循环子栏目标签
  • 原文地址:https://www.cnblogs.com/imyijie/p/4783598.html
Copyright © 2011-2022 走看看