2.终止进程相关命令

终止程序的运行

ctrl+C中断正在执行的程序

kill、killall命令

kill 杀进程号(杀一个)
kill:向进程发送控制信号,以实现对进程管理
显示当前系统可用信号:kill -l 或者trap -l

-l:列出当前kill能够使用的信号(注意小写l)

[root@localhost ~]# kill -l
1) SIGHUP     2) SIGINT     3) SIGQUIT   4) SIGILL       5) SIGTRAP
 6) SIGABRT  7) SIGBUS    8) SIGFPE     9) SIGKILL   10) SIGUSR1
11) SIGSEGV12) SIGUSR213) SIGPIPE  14) SIGALRM      15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD       18) SIGCONT      19) SIGSTOP       20) SIGTSTP
21) SIGTTIN 22) SIGTTOU       23) SIGURG  24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM  27) SIGPROF       28) SIGWINCH    29) SIGIO     30) SIGPWR
31) SIGSYS   34) SIGRTMIN     35) SIGRTMIN+1       36) SIGRTMIN+2       37) SIGRTMIN+3
38) SIGRTMIN+4       39) SIGRTMIN+5       40) SIGRTMIN+6       41) SIGRTMIN+7       42) SIGRTMIN+8
43) SIGRTMIN+9       44) SIGRTMIN+10     45) SIGRTMIN+11     46) SIGRTMIN+12     47) SIGRTMIN+13
48) SIGRTMIN+14     49) SIGRTMIN+15     50) SIGRTMAX-14     51) SIGRTMAX-13     52) SIGRTMAX-12
53) SIGRTMAX-11     54) SIGRTMAX-10     55) SIGRTMAX-9       56) SIGRTMAX-8       57) SIGRTMAX-7
58) SIGRTMAX-6       59) SIGRTMAX-5       60) SIGRTMAX-4       61) SIGRTMAX-3       62) SIGRTMAX-2
63) SIGRTMAX-1       64) SIGRTMAX    

常用信号:man 7 signal
1)SIGHUP:无需关闭进程而让其重读配置文件
2)SIKINT:终止正在运行的进程;相当于ctrl+c
9)SIGKILL:杀死正在运行的进程(强制立刻杀死进程)
15)SIGTERM:终止正在运行的进程(可能不会立即生效,会等进程保存完所有数据才正常退出)

killall用于终止指定名称的所有进程

killall 杀进程名(可杀多个)
-9选项用于强制终止
[root@localhost ~]# kill 972
[root@localhost ~]# killall -9 killall

pkill命令

作用:根据特定条件终止相应的进程
常用选项:

-U:根据进程所述的用户名终止相应进程

-t:根据进程所在的中断终止相应的进程

-l:指定名称中断进程

[root@localhost ~]# pkill -9 -U root          #杀死用户
[root@localhost ~]# pkill -9 -U root -t tty1     #杀死用户所在终端
[root@localhost ~]# pkill -9 -U root ping        #杀死指定用户的进程名
[root@localhost ~]# pkill -9 -U root -t pts/0 ping  #杀死指定用户指定终端的进程名**
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是C++模拟的代码: ```c++ #include <iostream> #include <vector> #include <ctime> using namespace std; // 进程结构体 struct Process { int id; // 进程ID int status; // 进程状态,0:阻塞,1:就绪,2:执行 int executeTime; // 执行时间 int priority; // 优先级 int blockTime; // 阻塞时间 Process(int i, int e, int p) { id = i; status = 1; executeTime = e; priority = p; blockTime = 0; } }; vector<Process> processList; // 进程列表 // 创建进程 void createProcess() { int id, executeTime, priority; cout << "请输入进程ID、执行时间和优先级,以空格隔开:"; cin >> id >> executeTime >> priority; Process p(id, executeTime, priority); processList.push_back(p); cout << "成功创建进程!" << endl; } // 阻塞进程 void blockProcess() { int id; cout << "请输入要阻塞的进程ID:"; cin >> id; for (int i = 0; i < processList.size(); i++) { if (processList[i].id == id && processList[i].status == 2) { processList[i].status = 0; processList[i].blockTime = time(NULL); cout << "成功阻塞进程!" << endl; return; } } cout << "进程不存在或进程未执行!" << endl; } // 执行进程 void executeProcess() { int id; cout << "请输入要执行的进程ID:"; cin >> id; for (int i = 0; i < processList.size(); i++) { if (processList[i].id == id && processList[i].status == 1) { processList[i].status = 2; cout << "成功执行进程!" << endl; return; } } cout << "进程不存在或进程已执行或阻塞!" << endl; } // 唤醒第一个阻塞进程 void wakeUpProcess() { for (int i = 0; i < processList.size(); i++) { if (processList[i].status == 0) { processList[i].status = 1; cout << "成功唤醒进程!" << endl; return; } } cout << "没有阻塞的进程!" << endl; } // 执行进程时间片到 void timeOut() { bool flag = false; for (int i = 0; i < processList.size(); i++) { if (processList[i].status == 2) { processList[i].status = 1; flag = true; cout << "时间片到,成功切换进程!" << endl; break; } } if (!flag) { cout << "没有正在执行的进程!" << endl; } } // 终止进程 void killProcess() { int id; cout << "请输入要终止进程ID:"; cin >> id; for (int i = 0; i < processList.size(); i++) { if (processList[i].id == id) { processList.erase(processList.begin() + i); cout << "成功终止进程!" << endl; return; } } cout << "进程不存在!" << endl; } // 查看进程 void viewProcess() { cout << "当前进程列表:" << endl; cout << "ID\t状态\t执行时间\t优先级\t阻塞时间" << endl; for (int i = 0; i < processList.size(); i++) { cout << processList[i].id << "\t"; if (processList[i].status == 0) { cout << "阻塞\t"; } else if (processList[i].status == 1) { cout << "就绪\t"; } else { cout << "执行\t"; } cout << processList[i].executeTime << "\t" << processList[i].priority << "\t" << processList[i].blockTime << endl; } } // 查看内存占用情况 void viewMemory() { cout << "内存占用情况:" << endl; cout << "进程ID\t执行时间" << endl; for (int i = 0; i < processList.size(); i++) { cout << processList[i].id << "\t" << processList[i].executeTime << endl; } } int main() { int choice; while (true) { cout << "请输入要进行的操作:1.创建进程 2.阻塞执行进程 3.执行进程 4.唤醒阻塞进程 5.执行进程时间片到 6.终止进程 7.查看进程 8.查看内存占用情况 0.退出" << endl; cin >> choice; switch (choice) { case 0: return 0; case 1: createProcess(); break; case 2: blockProcess(); break; case 3: executeProcess(); break; case 4: wakeUpProcess(); break; case 5: timeOut(); break; case 6: killProcess(); break; case 7: viewProcess(); break; case 8: viewMemory(); break; default: cout << "无效的操作!" << endl; break; } } return 0; } ``` 这个模拟程序实现了创建进程、阻塞执行进程、执行进程、唤醒第一个阻塞进程、执行进程时间片到、终止进程、查看进程和查看内存占用情况等功能。你可以根据需要进行修改和扩展。 ### 回答2: 1.创建进程:创建进程是指在计算机系统中新建一个现有程序的实例,以便在操作系统的管理下独立运行。创建进程的方式可以是通过系统调用或者其他进程通过fork()或exec()等函数创建。 2.阻塞执行进程:当一个进程需要等待某些事件发生时,可以选择阻塞自己的执行,让其他进程占用CPU资源。阻塞执行进程通常是通过调用系统函数或者等待一个信号量来实现。 3.执行进程:执行进程是指操作系统从就绪队列中选择一个进程,并分配CPU资源给该进程执行。在一个多道程序系统中,有多个进程可以执行,操作系统通过调度算法来选择下一个要执行的进程。 4.唤醒第一个阻塞进程:当一个等待事件发生的进程收到事件信号时,操作系统会将其从阻塞状态转为就绪状态,并放入就绪队列中。一旦进程被唤醒,它就可以参与到CPU资源的竞争中来。 5.执行进程时间片到:为了公平地分配CPU资源,操作系统通常会采用时间片轮转的调度算法。当一个进程的时间片用完后,操作系统会剥夺该进程的CPU控制权,并将其重新放入就绪队列中等待下一轮调度。 6.终止进程:当一个进程完成了它的任务,或者出现了无法继续执行的错误,操作系统就会将其终止终止进程的方式可以通过调用exit()函数或者发送终止信号来实现。 7.查看进程:在操作系统中,可以通过系统工具或者命令来查看当前运行的进程信息,包括进程ID、进程状态、占用的CPU和内存等。 8.查看内存占用情况:了解计算机系统中内存的使用情况对于性能优化和故障排除非常重要。可以通过系统工具或者命令来查看当前内存占用的情况,包括已使用内存、空闲内存以及内存交换等信息。 ### 回答3: 1. 创建进程:当操作系统接收到一个新的任务时,会为该任务创建一个新的进程。创建进程的过程包括为该进程分配独立的内存空间、创建相应的数据结构等。 2. 阻塞执行进程:当一个进程发起某些阻塞型操作,如等待用户输入或等待某个资源就绪时,该进程会被标记为阻塞状态,暂停执行,直到满足相应的条件。 3. 执行进程:处于就绪状态的进程会被调度器选择并执行。执行进程时,操作系统会分配给该进程一定的CPU时间片,进程利用这段时间执行其指定的任务。 4. 唤醒第一个阻塞进程:当被阻塞的进程所需资源就绪后,操作系统会将其唤醒,使其重新进入就绪状态,并等待调度器选择执行。 5. 执行进程时间片到:每个进程在执行时都有一个时间片,当其时间片用完后,操作系统会将其状态设置为就绪状态,并选择下一个进程执行。 6. 终止进程:当一个进程完成了其任务,或者发生了错误、崩溃等情况时,操作系统会将其标记为终止状态,并释放其占用的资源。 7. 查看进程:操作系统提供了一些工具或命令,可以用来查看当前正在运行的进程,可以查看进程进程ID、进程状态、所占用的资源等信息。 8. 查看内存占用情况:操作系统提供了相应的工具或命令,可以用来查看当前内存的使用情况,包括已使用的内存量、剩余的内存量等信息。通过查看内存占用情况,可以及时调整进程的内存分配,以提高系统的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值