当前位置:首页 » 操作系统 » linux重启进程

linux重启进程

发布时间: 2022-05-10 23:30:06

1. linux如何查进程,杀进程,重启进程

查找进程
ps -ef | grep -v grep | grep "XXXXX"
杀进程
kill -9 `ps -ef | grep -v grep | grep XXXXX | awk '{print $2}'`
重起
service XXXX restart

2. Linux启动进程的方法有哪些

有手动启动和调度启动两种方法,其中调度启动常用的命令为at、batch和crontab. 希赛里看来的资料,希望对你有帮助!

3. linux如何查进程、杀进程,重启进程

ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。 ps aux | grep program_filter_word,ps -ef |grep tomcat ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。 2.杀进程 显示CPU使用情况以及部分进程:top 显示连接端口使用进程:netstat -noap/-an |grep NAME 使用kill命令结束进程:kill xxx 常用:kill -9 324 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME 3.进入到进程的执行文件所在的路径下,执行文件 ./文件名 附: 这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载 1. 更改档案拥有者 命令: chown [-cfhvR] [--help] [--version] user[:group] file... 功能: 更改文件或者文件夹的拥有者 参数格式 : user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group) -c : 若该档案拥有者确实已经更改,才显示其更改动作 -f : 若该档案拥有者无法被更改也不要显示错误讯息 -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案 -v : 显示拥有者变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 例如:chown -R oracle:oinstall /oracle/u01/app/oracle 更改目录拥有者为oracle 2. 修改权限 命令:chmod (change mode) 功能:改变文件的读写和执行权限。有符号法和八进制数字法。 选项:(1)符号法: 命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename u (user) 表示用户本人。 g (group) 表示同组用户。 o (oher) 表示其他用户。 a (all) 表示所有用户。 + 用于给予指定用户的许可权限。 - 用于取消指定用户的许可权限。 = 将所许可的权限赋给文件。 r (read) 读许可,表示可以拷贝该文件或目录的内容。 w (write) 写许可,表示可以修改该文件或目录的内容。 x (execute)执行许可,表示可以执行该文件或进入目录。 (2)八进制数字法: 命令格式:chmod abc file 其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。 4 (100) 表示可读。 2 (010) 表示可写。 1 (001) 表示可执行。 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。 例如:# chmod a+rx filename 让所有用户可以读和执行文件filename。 # chmod go-rx filename 取消同组和其他用户的读和执行文件filename的权限。 # chmod 741 filename 让本人可读写执行、同组用户可读、其他用户可执行文件filename。 # chmod -R 755 /home/oracle 递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行 3. 修改文件日期 命令:touch 格式:touch filenae 功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。 例如:% touch file 4. 链接文件 命令:ln (link) 格式:ln [option] filename linkname ln [option] directory pathname 功能:为文件或目录建立一个链。其中,filename和directory是源文件名和 源目录名;linkname和pathname分别表示与源文件或源目录名相链接的 文件或目录。 选项:-s 为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接 注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出 现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。 例如:% ln -s filename linkname 5. 显示日期 命令:date 例如:% date 6. 显示日历 命令:cal (calendar) 格式:cal [month] year 功能:显示某年内指定的日历 例如:% cal 1998 7. 显示文件头部 命令:head 格式:head [option] filename 功能:显示文件的头部 选项:缺省 显示文件的头10行。 -i 显示文件的开始 i行。 例如:% head filename 8. 显示文件尾部 命令:tail 格式:tail [option] filename 功能:显示文件的尾部 选项:缺省 显示文件的末10行。 -i 显示文件最后 i行。 +i 从文件的第i行开始显示。 例如:% tail filename 9. 显示用户标识 命令:id 格式:id [option] [user] 功能:显示用户标识及用户所属的所有组。 选项:-a 显示用户名、用户标识及用户所属的所有组 注释: 例如:% id username 10. 查看当前登录的用户 命令:users 11. 显示都谁登录到机器上 命令:who 格式:who 功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。 例如:% who 12. 显示当前终端上的用户名 命令:whoami 格式:whoami 功能:显示出当前终端上使用的用户。 例如:% whoami 13. 寻找文件 命令:find 格式:find pathname [option] expression 功能:在所给的路经名下寻找符合表达式相匹配的文件。 选项:-name 表示文件名 -user 用户名,选取该用户所属的文件 -size 按大小查找,以block为单位,一个block是512B -mtime n 按最后一次修改时间查找,选取n天内被修改的文件 -perm 按权限查找 -type 按文件类型查找 -atime 按最后一次访问时间查找 例如:% find ./ -name '*abc*' -print 14. 搜索文件中匹配符 命令:grep 格式:grep [option] pattern filenames 功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 选项:-i 匹配时忽略大小写 -v 找出模式失配的行 例如:% grep -i 'java*' ./test/run.sh 15. 统计文件字数 命令:wc [option] filename 功能:统计文件中的文件行数、字数和字符数。 选项:-l 统计文件的行数 -w 统计文件的单词数 -c 统计文件的字符数 注释:若缺省文件名则指标准输入 例如:% wc -c ./test/run.sh 16. 显示磁盘空间 命令:df (disk free) 格式:df [option] 功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总 字节数、已用字节数、剩余字节数占用百分比。 选项: -a:显示全部的档案系统和各分割区的磁盘使用情形 -i:显示i -nodes的使用量 -k:大小用k来表示 (默认值) -t:显示某一个档案系统的所有分割区磁盘使用量 -x:显示不是某一个档案系统的所有分割区磁盘使用量 -T:显示每个分割区所属的档案系统名称 -h: 表示使用“Human-readable”的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。 注释: 例如:% df -hi 17. 查询档案或目录的磁盘使用空间 命令: (disk usage) 格式: [option] [filename] 功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小 选项: -a:显示全部目录和其次目录下的每个档案所占的磁盘空间 -b:大小用bytes来表示 (默认值为k bytes) -c:最后再加上总计 (默认值) -s:只显示各档案大小的总合 -x:只计算同属同一个档案系统的档案 -L:计算所有的档案大小 -h: 表示档案系统大小使用 GB、MB 等易读的格式。 例如:% -a % -sh /etc 只显示该目录的总合 % /etc | sort -nr | more 统计结果用sort 指令进行排序, sort 的参数 -nr 表示要以数字排序法进行反向排序。 18. 显示进程 命令:ps 格式:ps [option] 功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。 选项: -a 显示所有进程信息 -U uidlist 列出这个用户的所有进程 -e 显示当前运行的每一个进程信息 -f 显示一个完整的列表 -x 显示包括没有终端控制的进程状况 。 注释: 例如:% ps -ef % ps -aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 19. 终止进程 命令:kill 格式:kill [option] pid 功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process, 因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 选项:-9 强行终止进程 注释:pid标示进程号,可由ps命令得到。 例如:% kill -9 pid 你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。 20. 查看自己的IP地址 命令:ifconfig 格式:ifconfig -a 21. 查看路由表 命令:netstat 格式:netstat -rn 22. 远程登录 命令:telnet 格式:telnet hostname 23. 文件传输 命令:ftp (file transfer program) 格式:ftp hostname 功能:网络文件传输及远程操作。 选项:ftp命令: cd [dirname] 进入远程机的目录 lcd [dirname] 设置本地机的目录 dir/ls 显示远程的目录文件 bin 以二进制方式进行传输 asc 以文本文件方式进行传输 get/mget 从远程机取一个或多个文件 put/mput 向远程机送一个或多个文件 prompt 打开或关闭多个文件传送时的交互提示 close 关闭与远程机的连接 quit 退出ftp !/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态 注释: 例如:% ftp hostname 24. 查看自己的电子邮件 命令:mailx 格式:mailx 选项: delete 删除 next 下一个 quit 退出 reply 回复 25. 回忆命令 命令:history 格式:history 功能:帮助用户回忆执行过的命令。 选项: 注释: 例如:% history 26. 网上对话 命令:talk 格式:talk username 功能:在网上与另一用户进行对话。 选项: 注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部 显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。 例如:% talk username 27. 允许或拒绝接受信息 命令:mesg (message) 格式:mesg [n/y] 功能:允许或拒绝其它用户向自己所用的终端发送信息。 选项:n 拒绝其它用户向自己所用的终端写信息 y 允许其它用户向自己所用的终端写信息(缺省值) 注释: 例如:% mesg n 28. 给其他用户写信息 命令:write 格式:write username [ttyname] 功能:给其他用户的终端写信息。 选项: 注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。 例如:write username 29. 创建、修改、删除用户和群组 a. 创建群组: 例如: groupadd oinstall 创建群组名为oinstall的组 groupadd -g 344 dba 创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 b. 修改群组: groupmod:该命令用于改变用户组帐号的属性 groupmod –g 新的GID 用户组帐号名 groupmod –n 新组名 原组名:此命令由于改变用户组的名称 c. 删除群组: groupdel 组名:该命令用于删除指定的组帐号 d. 新建用户: 命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 主要参数 -c:加上备注文字,备注文字保存在passwd的备注栏中。 -d:指定用户登入时的启始目录。 -D:变更预设值。 -e:指定账号的有效期限,缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群组。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。 -u:指定用户ID号。 举例: # useradd -g oinstall -G dba oracle 创建Oracle用户 e. 删除用户 命令: userdel 用户名 删除指定的用户帐号 userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录 例:#useradd -g root kkk //把kkk用户加入root组里 f. 修改用户 命令: usermod 修改已有用户的信息 usermod –l 旧用户名 新用户名: 修改用户名 usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统 usermod –U 用户名: 对锁定的用户帐号进行解锁 passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统 例:#usermod -l user2 user1 //把用户user2改名为user1 30. 启动、关闭防火墙 永久打开或则关闭 chkconfig iptables on chkconfig iptables off 即时生效:重启后还原 service iptables start service iptables stop 或者: /etc/init.d/iptables start /etc/init.d/iptables stop 31. 启动VSFTP服务 即时启动: /etc/init.d/vsftpd start 即时停止: /etc/init.d/vsftpd stop 开机默认VSFTP服务自动启动: 方法一:(常用\方便) [root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况) vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost etc]# chkconfig vsftpd on (执行ON设置) 或者:方法二: 修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。 32. vi技巧 a. 进入输入模式 新增(append) a :从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。 A:从光标所在列最后面的地方开始新增资料。 插入(insert) i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。 I :从光标所在列的第一个非空白字符前面开始插入资料。 开始(open) o :在光标所在列下新增一列并进入输入模式。 O: 在光标所在列上方新增一列并进入输入模式。 b. 退出vi 在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。 c. 删除与修改文件的命令: x:删除光标所在字符。 dd :删除光标所在的列。 r :修改光标所在字符,r 后接着要修正的字符。 R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。 s:删除光标所在字符,并进入输入模式。 S:删除光标所在的列,并进入输入模式。 d. 屏幕翻滚类命令 Ctrl+u: 向文件首翻半屏 Ctrl+d: 向文件尾翻半屏 Ctrl+f: 向文件尾翻一屏 Ctrl+b: 向文件首翻一屏 nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

4. Linux启动新进程的几种方法及比较

有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些方法及它们之间的区别。一、system函数调用 system函数的原型为: #include <stdlib.h> int system (const char *string);它的作用是,运行以字符串参数的形式传递给它的命令并等待该命令的完成。命令的执行情况就如同在shell中执行命令:sh -c string。如果无法启动shell来运行这个命令,system函数返回错误代码127;如果是其他错误,则返回-1。否则,system函数将返回该命令的退出码。 注意:system函数调用用一个shell来启动想要执行的程序,所以可以把这个程序放到后台中执行,这里system函数调用会立即返回。 可以先先下面的例子,源文件为new_ps_system.c,代码如下: #include <stdlib.h> #include <stdio.h> int main() { printf("Running ps with system\n"); //ps进程结束后才返回,才能继续执行下面的代码 system("ps au");// 1 printf("ps Done\n"); exit(0); }该程序调用ps程序打印所有与本用户有关的进程,最后才打印ps Done。运行结果如下: 如果把注释1的语句改为:system("ps au &");则system函数立即返回,不用等待ps进程结束即可执行下面的代码。所以你看到的输出,ps Done可能并不是出现在最后一行,而是在中间。 一般来说,使用system函数不是启动其他进程的理想手段,因为它必须用一个shell来启动需要的程序,即在启动程序之前需要先启动一个shell,而且对shell的环境的依赖也很大,因此使用system函数的效率不高。 二、替换进程映像——使用exec系列函数 exec系列函数由一组相关的函数组成,它们在进程的启动方式和程序参数的表达方式上各有不同。但是exec系列函数都有一个共同的工作方式,就是把当前进程替换为一个新进程,也就是说你可以使用exec函数将程序的执行从一个程序切换到另一个程序,在新的程序启动后,原来的程序就不再执行了,新进程由path或file参数指定。exec函数比system函数更有效。 exec系列函数的类型为: #include <unistd.h> char **environ; int execl (const char *path, const char *arg0, ..., (char*)0); int execlp(const char *file, const char *arg0, ..., (char*)0); int execle(const char *path, const char *arg0, ..., (char*)0, char *const envp[]); int execv (const char *path, char *const argv[]); int execvp(cosnt char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]);这类函数可以分为两大类,execl、execlp和execle的参数是可变的,以一个空指针结束,而execv、execvp和execve的第二个参数是一个字符串数组,在调用新进程时,argv作为新进程的main函数的参数。而envp可作为新进程的环境变量,传递给新的进程,从而变量它可用的环境变量。 承接上一个例子,如果想用exec系统函数来启动ps进程,则这6个不同的函数的调用语句为: 注:arg0为程序的名字,所以在这个例子中全为ps。 char *const ps_envp[] = {"PATH=/bin:usr/bin", "TERM=console", 0}; char *const ps_argv[] = {"ps", "au", 0}; execl("/bin/ps", "ps", "au", 0); execlp("ps", "ps", "au", 0); execle("/bin/ps", "ps", "au", 0, ps_envp); execv("/bin/ps", ps_argv); execvp("ps", ps_argv); execve("/bin/ps", ps_argv, ps_envp);下面我给出一个完整的例子,源文件名为new_ps_exec.c,代码如下: #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main() { printf("Running ps with execlp\n"); execlp("ps", "ps", "au", (char*)0); printf("ps Done"); exit(0); }运行结果如下: 细心的话,可以发现,最后的ps Done并没有输出,这是偶然吗?并不是,因为我们并没有再一次返回到程序new_ps_exec.exe上,因为调用execlp函数时,new_ps_exec.exe进程被替换为ps进程,当ps进程结束后,整个程序就结束了,并没有回到原来的new_ps_exec.exe进程上,原本的进程new_ps_exec.exe不会再执行,所以语句printf("ps Done");根本没有机会执行。 注意,一般情况下,exec函数是不会返回的,除非发生错误返回-1,由exec启动的新进程继承了原进程的许多特性,在原进程中已打开的文件描述符在新进程中仍将保持打开,但任何在原进程中已打开的目录流都将在新进程中被关闭。 三、复制进程映像——fork函数1、fork函数的应用 exec调用用新的进程替换当前执行的进程,而我们也可以用fork来复制一个新的进程,新的进程几乎与原进程一模一样,执行的代码也完全相同,但新进程有自己的数据空间、环境和文件描述符。 fork函数的原型为: #include <sys/type.h> #include <unistd.h> pid_t fork();注:在父进程中,fork返回的是新的子进程的PID,子进程中的fork返回的是0,我们可以通过这一点来判断父进程和子进程,如果fork调用失败,它返回-1. 继承上面的例子,下面我给出一个调用ps的例子,源文件名为new_ps_fork.c,代码如下: #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <stdlib.h> int main() { pid_t pid = fork(); switch(pid) { case -1: perror("fork failed"); exit(1); break; case 0: //这是在子进程中,调用execlp切换为ps进程 printf("\n"); execlp("ps", "ps", "au", 0); break; default: //这是在父进程中,输出相关提示信息 printf("Parent, ps Done\n"); break; } exit(0); }输出结果为: 我们可以看到,之前在第二点中没有出现的ps Done是打印出来了,但是顺序却有点不对,这是因为,父进程先于子程序执行,所以先输出了Parent, ps Done,那有没有办法让它在子进程输出完之后再输出,当然有,就是用wait和waitpid函数。注意,一般情况下,父进程与子进程的生命周期是没有关系的,即便父进程退出了,子进程仍然可以正常运行。 2、等待一个进程 wait函数和waitpid函数的原型为: #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *stat_loc); pid_t waitpid(pid_t pid, int *stat_loc, int options);wait用于在父进程中调用,让父进程暂停执行等待子进程的结束,返回子进程的PID,如果stat_loc不是空指针,状态信息将被写入stat_loc指向的位置。 waitpid等待进程id为pid的子进程的结束(pid为-1,将返回任一子进程的信息),stat_loc参数的作用与wait函数相同,options用于改变waitpid的行为,其中有一个很重要的选项WNOHANG,它的作用是防止waippid调用者的执行挂起。如果子进程没有结束或意外终止,它返回0,否则返回子进程的pid。 改变后的程序保存为源文件new_ps_fork2.c,代码如下: #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <stdlib.h> int main() { pid_t pid = fork(); int stat = 0; switch(pid) { case -1: perror("fork failed"); exit(1); break; case 0: //这是在子进程中,调用execlp切换为ps进程 printf("\n"); execlp("ps", "ps", "au", 0); break; default: //这是在父进程中,等待子进程结束并输出相关提示信息 pid = wait(&stat); printf("Child has finished: PID = %d\n", pid); //检查子进程的退出状态 if(WIFEXITED(stat)) printf("Child exited with code %d\n", WEXITSTATUS(stat)); else printf("Child terminated abnormally\n"); printf("Parent, ps Done\n"); break; } exit(0); }输出为: 可以看到这次的输出终于正常了,Parent的输出也在子进程的输出之后。 总结——三种启动新进程方法的比较 首先是最简单的system函数,它需要启动新的shell并在新的shell是执行子进程,所以对环境的依赖较大,而且效率也不高。同时system函数要等待子进程的返回才能执行下面的语句。 exec系统函数是用新的进程来替换原先的进程,效率较高,但是它不会返回到原先的进程,也就是说在exec函数后面的所以代码都不会被执行,除非exec调用失败。然而exec启动的新进程继承了原进程的许多特性,在原进程中已打开的文件描述符在新进程中仍将保持打开,但需要注意,任何在原进程中已打开的目录流都将在新进程中被关闭。 fork则是用当前的进程来复制出一个新的进程,新进程与原进程一模一样,执行的代码也完全相同,但新进程有自己的数据空间、环境变量和文件描述符,我们通常根据fork函数的返回值来确定当前的进程是子进程还是父进程,即它并不像exec那样并不返回,而是返回一个pid_t的值用于判断,我们还可以继续执行fork后面的代码。

5. linux中如何重启某一进程

1、首先使用ps -ef查找进程的执行语句并保留它;这个的目的是保留进程执行的参数不变;
例如重启单个mongodb的过程:
查找:ps -ef|grep mongod
获得:
root 2928 2903 0 14:51 pts/0 00:00:00 grep /usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
2、使用kill -9 PID杀掉该进程;
kill -9 2928
3、使用保留的进程语句重启进程;

/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf

6. LINUX如何实现进程杀死后重新启动

HOHO相当有难度的问题。

首先,我想知道的是如何叫意外杀死,一切没有执行完的都算是意外杀死么?我看用shell解决是比较合适的。大致流程如下:

首先我希望你有1234的源代码,因为我不知道你所谓的意外杀死是什么情况下意外杀死,比如通过kill来发送信号杀死他。请注意,如果你程序执行出现异常也是通过信号来杀死,不过是内核发送的,而不是你自己来发送的。所以我希望你修改1234的源代码,在他正常结束的情况下,你最好有个输出标志标识他正常结束。比如你的程序是C写的,那么希望你在正常结束后调用一个printf("success end");这个应该不难。

紧接着,你写一个shell脚本,这个脚本应该是这样
绝对路径/1234 > 绝对路径/my.txt,以后想启动这个进程就用这个脚本来启动。

在希望你写一个脚本,这个脚本执行ps -le首先查看进程里面是否还存在1234这个进程,如果有就什么都不做退出,如果没有了,那你就检查my.txt文件看是否是正常结束了,如果正常结束就从cron守护进程的配置文件移除我这个检测脚本。如果没有找到 success end的话,那么就再次启动。

最后将这个脚本加到cron守护进程的配置文件中,定时启动它检测。

有点麻烦,不过这是我能想到的办法了,也许其它人有更好的办法。

7. linux中进程的三种启动方式

太过简短了.不太明白是什么意思.
前几天在一个考材上看到. linux的服务有三种启动方式.
1 init
2 /etc/rcX.d
3 xinetd
我想由用户从 shell启动应该怎么也算是一种吧. 我对基本概念都不怎么清楚.

8. linux 系统重启 进程还在

可以通过进程pid重启某一个进程,方法是用kill命令给进程发送sighup信号,而kill命令是可以用进程pid作为参数的,所以就实现了通过pid重启进程。

9. linux系统下如何从后台启动进程.

你得查看后台存在的进程 #jobs

#fg

#bg

两个命令是调入前台和后台的命令

在命令后面加上一个 &
比如:
rm -rf /tmp/ &
linux 技巧:让进程在后台可靠运行的几种方法
weibogoogle+用电子邮件发送本页面
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。

热点内容
阿里云怎么领服务器 发布:2024-10-09 05:17:53 浏览:816
c语言可逆素数 发布:2024-10-09 05:13:44 浏览:920
班级采访问题 发布:2024-10-09 04:45:44 浏览:497
单人地图脚本 发布:2024-10-09 04:45:32 浏览:754
易语言cf自瞄源码 发布:2024-10-09 04:36:14 浏览:121
安卓和苹果哪个更难修理 发布:2024-10-09 04:36:12 浏览:26
黎明觉醒安卓什么配置 发布:2024-10-09 04:32:05 浏览:127
助手autojs脚本 发布:2024-10-09 04:31:40 浏览:186
sql判断今天 发布:2024-10-09 04:19:35 浏览:943
拆分视频需要哪些配置 发布:2024-10-09 04:06:39 浏览:912