Linux系统程序与进程
本博客将介绍Linux系统中的程序和进程,并详细介绍一些与进程相关的常用命令。我们将讨论如何使用这些命令来查看、管理和操作进程,以及一些其他有用的功能和技巧。
程序和进程
在Linux系统中,程序是指可执行文件或脚本,它们包含了一系列指令和操作,用于完成特定的任务。当我们运行一个程序时,操作系统会为该程序创建一个进程。
进程是指在运行中的程序的实例。每个进程都有自己的独立内存空间和系统资源,并且可以与其他进程进行通信。Linux系统使用进程来执行各种任务,包括运行应用程序、处理系统事件等。
进程静态查看工具
ps
ps
命令用于查看当前系统中的进程信息。
ps aux
:显示当前所有用户的所有进程信息。ps -l
:以长格式显示进程信息,包括进程的状态、优先级等详细信息。pstree -p
:以树状图显示进程间的关系,并显示进程的PID(进程ID)。
以下是一些示例:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 168120 9772 ? Ss Jun21 0:03 /sbin/init
root 2 0.0 0.0 0 0 ? S Jun21 0:00 [kthreadd]
...
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 8855 poll_s ? 00:00:03 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
...
$ pstree -p
init(1)─┬─systemd(979)-─(sd-pam)(982)
├─systemd-journal(301)
├─systemd-udevd(367)
└─sshd(1209)─┬─sshd(1857)───bash(1859)
├─sshd(2204)───bash(2206)
├─sshd(2919)───bash(2921)
└─sshd(2976)───bash(2978)
进程动态查看工具
top
top
命令用于实时监视系统中的进程和系统资源的使用情况。
以下是一些常用的top
命令参数:
-d <秒数>
:指定刷新间隔时间,默认为3秒。-u <用户名>
:只显示指定用户的进程信息。-p <PID>
:只显示指定PID的进程信息。
以下是一个示例:
$ top -d 5
top - 10:34:52 up 1:23, 1 user, load average: 0.02, 0.05, 0.07
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2046652 total, 251988 free, 949876 used, 754788 buff/cache
KiB Swap: 1048572 total, 903964 free, 144608 used. 1039208 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1176 root 20 0 155520 21204 10792 S 0.3 1.0 0:08.56 Xorg
2124 user 20 0 2771296 205680 76052 S 0.3 10.0 0:49.82 gnome-shell
...
进程的前后台调动
jobs
jobs
命令用于查看当前会话(shell)中正在运行或挂起的作业(任务)。
以下是一个示例:
$ sleep 60 &
[1] 1234 # 作业[1](PID为1234)在后台运行
$ jobs
[1]+ Running sleep 60 &
$ fg %1 # 将作业[1]调至前台
kill
kill
命令用于发送信号给指定的进程,以终止或管理进程。
以下是一些常用的kill
命令参数:
-l
:列出所有可用的信号。-9
:使用SIGKILL信号强制终止进程。
以下是一个示例:
$ ps aux | grep firefox
user 2345 4.5 10.2 123456 54321 ? Sl Jun22 1:23 firefox
$ kill -9 2345 # 终止进程ID为2345的进程
改变进程优先级
可以使用nice
命令来改变进程的优先级。
以下是一个示例:
$ nice -n 10 command # 将command命令的优先级调整为10
screen 虚拟窗口管理器
screen
是一个虚拟终端管理器,它允许用户在单个终端会话中创建多个窗口并切换。
以下是一些常用的screen
命令:
screen
:启动一个新的screen会话。Ctrl+A D
:分离当前的screen会话。screen -r
:恢复之前分离的screen会话。
nohup 离线管理
nohup
命令用于在后台运行程序,并忽略所有挂起的SIGHUP信号。
以下是一个示例:
$ nohup command > output.log &
设置来电自启
要设置一个程序在系统启动时自动运行,可以将其添加到启动脚本中,如/etc/rc.local
或使用systemd
服务。
设置定时开机
要设置系统定时开机,可以使用crontab
命令来编辑定时任务。
以下是一个示例:
$ crontab -e
然后在编辑器中添加一行类似以下的条目:
0 8 * * 1-5 /sbin/shutdown -r now
这将在每周一至周五的早上8点定时重启系统。
恢复误删除文件(仅限于CentOS 6)
在CentOS 6中,可以使用extundelete
工具来恢复被误删除的文件。
以下是一个示例:
$ extundelete /dev/sda1 --restore-file /path/to/deleted/file
请注意,恢复误删除的文件并不总是成功的,因此请在执行恢复操作之前谨慎评估。
结论
本博客介绍了Linux系统中的程序和进程的概念,并提供了一些与进程相关的常用命令的详细说明和示例。通过了解和熟练使用这些命令,您可以更好地管理和操作系统中的进程,以及利用其他功能和技巧来提高工作效率和系统维护能力。希望这篇博客对您有所帮助!