• 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/

  • 相关阅读:
    javascript基础全等号运算符
    javascript 使用ScriptX实现打印
    跨服务器与本地服务器不同数据库的SQL操作语句
    ASP.NET网络上实现单点登录
    FGMap API 帮助文档
    基于ArcEngine写的GoogleMap地图切割程序
    基于SuperMap Objects写的GoogleMap地图切割程序(三)
    使用SuperSocket开发联网斗地主(四):出牌
    JAVA创建对象方法
    Mysql 外键约束
  • 原文地址:https://www.cnblogs.com/imyijie/p/4783598.html
Copyright © 2020-2023  润新知