在 Linux 操作系统中,查看正在运行的命令是系统管理和故障排除的重要组成部分,以下是一些常用的命令和工具,可以帮助你查看系统中当前运行的进程及其详细信息。
ps 命令
ps
(process status)命令是最常用来查看进程状态的工具之一,它可以显示当前终端会话中的进程信息,或者通过特定选项查看整个系统的进程。
ps aux
a
:显示所有用户的进程
u
:以用户友好格式显示
x
:显示没有控制终端的进程
输出示例:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2256 692 ? Ss 10:23 0:01 /sbin/init ...
top 命令
top
命令是一个实时的系统监控工具,可以动态地显示系统中各个进程的资源使用情况,它会定期刷新,默认每隔 3 秒更新一次。
top
输出示例:
top 10:25:34 up 10 days, 3:45, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.5 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 2048560 total, 345672 free, 512000 used, 1190888 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1643368 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1029 root 20 0 123456 65432 43212 S 0.1 3.2 0:05.23 some_process
htop 命令
htop
是top
命令的一个增强版,提供了更友好的用户界面和更多的交互功能,它需要单独安装。
sudo apt-get install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL
启动htop
:
htop
pstree 命令
pstree
命令以树状结构显示进程之间的关系,有助于理解进程之间的父子关系。
pstree
输出示例:
systemd─┬─ModemManager ├─NetworkManager───dhclient ├─accounts-daemon───at-spi-dbus-bus ├─agetty───bash───sshd───sshd───bash───top ├─cron ├─dbus-daemon ├─irqbalance ├─rsyslogd───rsyslogd ├─systemd-journal ├─systemd-logind───getty@tty1 ├─systemd-logind───getty@tty2 ├─systemd-logind───getty@tty3 ├─systemd-logind───getty@tty4 ├─systemd-logind───getty@tty5 ├─systemd-logind───getty@tty6 ├─systemd-udevd───udevd───udevd-fallback-g... └─udisks-glue
netstat 命令
netstat
命令用于显示网络连接、路由表、接口统计等信息,它可以帮助你查看哪些进程在监听端口或建立连接。
netstat -tuln
输出示例:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp6 0 0 :::80 :::* LISTEN 5678/apache2
lsof 命令
lsof
(list open files)命令列出当前打开的文件,包括网络套接字、设备文件等,它可以用来查看某个端口被哪个进程占用。
lsof -i :80
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME apache2 5678 root 4u IPv4 12345 0t0 TCP *:http (LISTEN)
systemctl 命令
systemctl
是 systemd 的前端命令,用于管理系统和服务,你可以用它来查看服务的状态。
systemctl status <service-name>
systemctl status httpd.service
输出示例:
● httpd.service The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2023-10-02 10:23:45 PDT; 5min ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1234 (httpd) CGroup: /system.slice/httpd.service ├─1234 /usr/sbin/httpd -DFOREGROUND ├─1235 /usr/sbin/httpd -DFOREGROUND └─1236 /usr/sbin/httpd -DFOREGROUND
FAQs
Q1: 如何杀死一个进程?
A1: 你可以使用kill
命令来终止一个进程,你需要知道要终止的进程的 PID(进程 ID),然后使用以下命令:
kill <PID>
如果普通的kill
命令不起作用,可以尝试使用-9
参数强制终止进程:
kill -9 <PID>
你还可以使用pkill
根据进程名来终止进程:
pkill <process-name>
pkill httpd
这将终止所有名为httpd
的进程。
Q2: 如何限制某个进程的资源使用?
A2: 你可以使用cgroups
(控制组)来限制进程的资源使用,限制 CPU 使用率和内存使用量,以下是一个简单的例子,如何使用cgcreate
和cgexec
命令来创建一个控制组并限制资源:
创建一个新的 cgroup sudo cgcreate -g memory,cpu:/mygroup 将进程放入 cgroup,并限制其最大内存使用为 512MB,CPU 使用率为 50% sudo cgexec -g memory,cpu:/mygroup --maxmem=512M --cpuset=0-3 your_command_here
这些命令可能需要管理员权限,并且你的系统需要支持cgroups
,不同的 Linux 发行版可能有不同的配置和管理方式,具体可以参考相应的文档。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1270859.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复