程序运行的方式有两种:
第一种:前台
文件在当前路径:./app
文件在其他路径:/home/project/app
第二种:后台(绝对路径 + &)
文件在当前路径:./app &
文件在其他路径:/home/project/app &
如何将正在运行的前台程序转为后台运行?
第一步:ctrl + z (ps:暂停执行,暂停后的程序可以通过后面的gb活着fb命令执行方式继续唤醒执行)
第二步:jobs -l (ps:查看后台运行的程序)
第三部:bg %1 (ps:bg命令就是将程序放到后台执行,命令原型:bg %n n是程序编号,就是通过jobs命令查看到的编号)
如何将正在运行的后台程序转为前台运行?
fg %n (ps:n是程序编号
结束程序?
前台执行程序:Ctrl + c (ps:终止程序)
后台执行程序:kill -9 pid (ps:杀死进程,pid是进程ID,jobs -l查询出的信息中有)
终端结束后,程序依然执行:
当用户注销(logout)或者网络断开时,终端会收到Linux HUP信号(hangup)信号从而关闭其所有子进程。
第一种:nohup命令(ps:忽视HUP信号)
nohup /home/project/app &
第二种:setsid命令(ps:与父进程脱离关系(会话关系,进程关系,终端...颇有点六亲不认的感觉),重新新建会话(另起炉灶),父进程凉不凉的我不知道,终端凉了没我也不清楚(就算诛九族也跟它没关系))
setsid /home/project/app &
在unistd.h头文件还有setsid() 这么个函数,功能好像差不多
把控:
重定向:
在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
一、 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
二、 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
三、 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
对于一个程序来说,有输出内容是很普遍的事情,如果一直看着运行结果,怕是有点不科学。所以...重定向 我脚得ok
/home/project/app > logs & (ps:将app的输出 重定向到logs,如果文件存在则覆盖) 末尾的& 是放在后台执行
/home/project/app >> logs & (ps:将app的输出 重定向到logs,如果文件存在则追加)
/home/project/app 1>logs 2>eLogs & (ps:将app的输出 正确的重定向到logs,错误的重定向到eLogs)
/home/project/app >logs 2> &1 & (ps:将app的正确和错误的都输出 重定向到logs)
运行输出日志有了。
如何观察日志?
tail命令
动态监视:
tail -f logs (ps:监视logs的后10行数据,默认10行)
tail -f -n 20 logs (ps:监视后20行)
静态查看:
tail -n 10 logs (ps:查看logs文件的后十行数据)
tail -n +100 logs (ps:查看logs的100行以后的数据)
head命令
head -n 10 logs (ps:查看文件的前10行数据...)
可能有些有错没注意到。。。。。社会,社会。