linux-系统进程,系统性能和计划任务

一、进程和线程

定义:

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

关系:

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程。

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
 

1.2、进程使用内存问题

 1.2.1、内存泄漏:Memory Leak

内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

 1.2.2、内存溢出:Memory Overflow

是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件,而由系统配置、数据流、用户代码等原因而导致的内存溢出错误,即使用户重新执行任务依然无法避免

1.2.3、内存不足:OOM

即out of memory ,内存用完了,次情况在JAVA程序中比较常见。系统会选一个程序将之杀死。
 

二、进程管理工具   

 2.1、进程树 pstree

pstree命令可以用来显示进程的父子关系,以树形结构显示(软件包 psmisc-23.1-3.el8.x86_64)
语法:
pstree   [OPTION]   [PID  |  USER]
 
 常用选项:

 

 示例:

[19:03:49 root@Centos8 ~]#pstree 1
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─atd
        ├─auditd───{auditd}
        ├─automount───4*[{automount}]
        ├─crond
        ├─dbus-daemon
        ├─httpd─┬─httpd
        │       ├─httpd───80*[{httpd}]
        │       └─2*[httpd───64*[{httpd}]]
        ├─irqbalance───{irqbalance}
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rngd───{rngd}
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─sssd─┬─sssd_be
        │      └─sssd_nss
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───3*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

 

 
 
[19:14:25 root@Centos8 ~]#pstree -T
systemd─┬─NetworkManager
        ├─VGAuthService
        ├─agetty
        ├─atd
        ├─auditd
        ├─automount
        ├─crond
        ├─dbus-daemon
        ├─httpd───4*[httpd]
        ├─irqbalance
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd
        ├─rngd
        ├─rsyslogd
        ├─sshd───sshd───sshd───bash───pstree
        ├─sssd─┬─sssd_be
        │      └─sssd_nss
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned
        └─vmtoolsd

 

[19:14:58 root@Centos8 ~]#pstree -pT
systemd(1)─┬─NetworkManager(828)
           ├─VGAuthService(823)
           ├─agetty(935)
           ├─atd(934)
           ├─auditd(800)
           ├─automount(923)
           ├─crond(930)
           ├─dbus-daemon(826)
           ├─httpd(844)─┬─httpd(1152)
           │            ├─httpd(1153)
           │            ├─httpd(1154)
           │            └─httpd(1155)
           ├─irqbalance(829)
           ├─master(1007)─┬─pickup(1008)
           │              └─qmgr(1009)
           ├─polkitd(830)
           ├─rngd(822)
           ├─rsyslogd(893)
           ├─sshd(846)───sshd(1371)───sshd(1383)───bash(1384)───pstree(1971)
           ├─sssd(825)─┬─sssd_be(865)
           │           └─sssd_nss(906)
           ├─systemd(1374)───(sd-pam)(1377)
           ├─systemd-journal(643)
           ├─systemd-logind(925)
           ├─systemd-udevd(678)
           ├─tuned(848)
           └─vmtoolsd(824)

 

[19:15:31 root@Centos8 ~]#pstree -u
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─atd
        ├─auditd───{auditd}
        ├─automount───4*[{automount}]
        ├─crond
        ├─dbus-daemon(dbus)
        ├─httpd─┬─httpd(apache)
        │       ├─httpd(apache)───80*[{httpd}]
        │       └─2*[httpd(apache)───64*[{httpd}]]
        ├─irqbalance───{irqbalance}
        ├─master─┬─pickup(postfix)
        │        └─qmgr(postfix)
        ├─polkitd(polkitd)───5*[{polkitd}]
        ├─rngd───{rngd}
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─sssd─┬─sssd_be
        │      └─sssd_nss
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───3*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

 

 2.2、进程信息ps

 Linux ps命令用于显示当前进程 (process) 的状态。
 

 

 常用选项

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值