1. 进程的启动方式

1.1 手工启动进程

由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否 需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。 进程在前台运行 (如执行“ls -l”命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。

启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使 用 cp 命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&” 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作

cp /dev/cdrom /home/cetos7.iso &
1.2 调度启动

在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指 定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务进程均在后台运行,不会占用用户的命令终端。 进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。

2. 进程的前后台调度

2.1 Ctrl+Z组合键

当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台 ,可以按 Ctrl+Z 组合键将该下载任务调入后台并暂停执行

tar zcvf usr.tar.gz /usr
2.2 jobs 命令

jobs 命令用于查看当前会话中运行的后台任务。

常用选项

  • jobs -l:列出当前所有后台任务及其进程 ID。

查看当前终端会话中的后台任务。

fg 和 bg 命令
  • fg:将后台任务带回前台执行。
  • bg:将暂停的任务放回后台继续执行。

案例

fg %1

将后台任务编号为 1 的任务带回前台。

bg %2

将后台任务编号为 2 的任务恢复在后台运行。

3.终止进程的运行

3.1 Ctrl+C组合键

中断正在执行的命令

3.2 kill 命令

kill 命令用于发送信号给进程,通常用来终止进程。

常用选项

  • kill [PID]:正常终止进程。
  • kill -9 [PID]:强制终止进程(不可恢复)。

案例

kill 1234

终止 PID 为 1234 的进程。

kill -9 1234

强制终止 PID 为 1234 的进程。

3.3 killall 命令

killall 命令根据进程名称终止进程。

案例

killall vim

终止所有名为 vim 的进程。

pkill 命令

pkill 命令根据进程属性(如用户名、终端等)终止进程。

案例

pkill -u root
[root@localhost ~]# pkill -9 -U "hackli"

终止所有由 root 用户启动的进程。


4. 计划任务管理

计划任务用于自动执行系统中的任务。Linux 中常用的计划任务工具包括 atcron

4.1 一次性任务:at 命令

at 命令用于设置一次性任务,任务将在指定时间执行。

  • 命令格式
at [HH:MM] [yyyy-mm-dd]
at> [要执行的命令]
  • 常用选项
  • atq:列出待执行的任务。
  • atrm [任务编号]:删除指定的任务。

案例

at 16:30 2021-08-16
at> echo "Backup completed" > /tmp/backup.log
at> <EOT>

设置任务在指定时间执行,并将输出保存到 /tmp/backup.log 文件中。

4.2 周期性任务:cron 命令**

cron 用于设置定期执行的任务。用户可以通过 crontab 命令编辑和管理自己的计划任务。

  • 命令格式
* * * * * [command]
  • *:每个字段的取值范围:分钟(0-59),小时(0-23),日期(1-31),月份(1-12),星期(0-6,0 为周日)。
  • [command]:要执行的命令。

常用命令

  • crontab -e:编辑当前用户的 cron 任务。
  • crontab -l:列出当前用户的 cron 任务。
  • crontab -r:删除当前用户的所有 cron 任务。
    其他命令
设置用户的周期性计划任务列表主要通过 crontab 命令进行,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
下面将分别讲解 crontab 命令相关选项的使用。crontab -u 用户名 #指定XX用户的cron服务
crontab -u zx -l #列出zx用户下的cron的详细内容
crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容
crontab -r -u zx #删除zx用户的cron内容

案例

50 7 * * * /usr/bin/systemctl start sshd.service
50 22 * * * /usr/bin/systemctl stop sshd.service

每天的 7:50 启动 sshd 服务,22:50 停止 sshd 服务。

4.3 cron 服务管理
  • 启动 cron 服务
systemctl start crond
  • 查看 cron 服务状态
systemctl status crond
  • 启用 cron 服务开机启动
systemctl enable crond


总结与案例

  1. 进程管理
  • 使用 ps 查看系统中的进程。
  • 使用 top 查看实时的进程和资源占用情况。
  • 使用 killkillall 终止进程。
  1. 计划任务
  • 使用 at 设置一次性任务。
  • 使用 cron 设置周期性任务,并通过 crontab 管理任务。

案例总结

  1. 查看进程
ps -aux | grep vim

查看 vim 进程的 CPU 和内存使用情况。

  1. 设置周期性任务
crontab -e
30 2 * * * /usr/bin/rsync -av /data /backup

通过这些命令,您可以高效地管理 Linux 系统中的进程和计划任务,自动化管理日常操作和提高系统的效率。

5 其他命令

我们可以继续详细解析这些命令,提供更多的实例和解释,帮助您更好地掌握它们的使用。

1. date

功能:

date 命令用于显示当前的系统日期和时间,可以指定不同的输出格式,或用它来设置系统的日期和时间。

详细案例:
  • 显示当前系统时间:
date

输出:Wed Aug 14 16:24:51 UTC 2025

  • 自定义时间格式:
date "+%Y-%m-%d %H:%M:%S"

输出:2025-08-14 16:24:51

  • 显示当前时间的时间戳(从1970年1月1日以来的秒数):
date +%s

输出:1692017091

  • 设置系统时间:
sudo date +%Y-%m-%d -s "2025-08-14"

这会将系统日期设置为 2025年8月14日


2. cal

功能:

cal 命令用来显示当前月份或指定月份的日历。可以方便地查看日期。

详细案例:
  • 查看当前月份的日历:
cal

输出(假设当前为2025年8月):

August 2025
Su Mo Tu We Th Fr Sa1  23  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
  • 查看指定年份和月份的日历:
cal 12 2025

输出:查看2025年12月的日历。

  • 显示一整年的日历:
cal -y 2025

输出:显示2025年全年日历。


3. history

功能:

history 命令用来查看当前用户的历史命令。这个命令可以帮助你快速找到之前运行的命令。

详细案例:
  • 查看命令历史:
history

输出示例:

1  ls
2  cd /home/user
3  mkdir new_folder
4  history
  • 查看历史命令中的特定条目:
history | grep "mkdir"

这会过滤出历史记录中所有包含 mkdir 的命令。

  • 执行历史命令: 使用历史命令编号执行:
!2

这会执行编号为2的命令,即 cd /home/user


4. scp

功能:

scp 命令用于通过 SSH 协议在本地和远程服务器之间安全地复制文件或目录。它加密了数据传输,因此更加安全。

详细案例:
  • 将本地文件复制到远程服务器:
scp file.txt user@remote:/path/to/destination/

这会将 file.txt 文件从本地复制到远程服务器的 /path/to/destination/ 目录。

  • 将本地目录复制到远程服务器:
scp -r /local/dir/ user@remote:/remote/dir/

这会将本地目录 /local/dir/ 及其内容复制到远程目录 /remote/dir/

  • 将远程文件复制到本地:
scp user@remote:/remote/path/to/file.txt /local/destination/
  • 从远程服务器复制整个目录到本地:
scp -r user@remote:/remote/dir /local/dir/