管理linux的后台运行
在我们通过SSH登陆服务器后,一般来说,所做的操作或者命令的输入都是属sshd下的shell的子进程,例如打开个SSH终端,输入ping www.163.com >>output.txt &,然后查看进程情况:
$ ps -ef|grep ping
sszheng 27491 27467 0 10:20 pts/0 00:00:00 ping www.163.com
sszheng 27535 27467 0 11:40 pts/0 00:00:00 grep ping
很显然它是shell的子进程,命令由一个子shell在后台执行,当前shell(
27467)立即取得控制等候用户输入,所以我的grep就可以使用了。后台命令和当前shell的执行是并行的,他们没有互相的依赖、等待关系,所以是异步的并行。 现在问题来了,如果ssh退出了,bash结束了,那么这个工作过程如何呢?后台执行的能否继续下去?
这里涉及到两个问题,就是退出ssh后,在我们exit执行的shell时候,会不会向我们后台的jobs发送SIGHUP信号呢?
如果发送了
SIGHUP信号,那么所有该shell下运行的进程都会被终止,也就是所希望的后台执行没有实现。在shell的options中,有
huponexit这个选项,意思就是退出shell时候,是否发送这个SIGHUP
信号?
$ shopt
cdable_vars off
cdspell off
checkhash off
checkwinsize off
cmdhist on
dotglob off
execfail off
expand_aliases on
extdebug off
extglob off
extquote on
failglob off
force_fignore on
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist &n
相关文档:
手头有个ep9315的板,今天突然想起跑一下adsl上网。晚上回来就开始搞。
从10点到现在,终于能够跑起来。
给大家借鉴一下。
1.编译内核,把ppp的那些选项选上。 (我用2.6.8.1的kernel,cirrus 的patch)
2.libpcap-0.9.1 这个包是pppd需要的。
./configure CC=arm-linux-gcc CFLAGS=-msoft-float --target=arm-linu ......
如果服务器是自己的,并且机器就在身边,那什么都不用说了,缺少gcc顶多就是重新放入安装盘,把开发工具包安装上。但是如果是租的服务器,托管服务方那帮人又搞不懂你说的啥子gcc,要安装gcc实在是太麻烦了。你得去找gcc相关的包,版本号还得必须对应上,否则不兼容。最近给一个朋友装gcc, ......
Linux 远程登录服务:telnet和ssh
通常情况下远程登录我们使用telnet服务,Red Hat
Linux带有telnet服务器的软件包,我们需要安装telnet-server和xinetd两个软件包:
[root@rh73 ~]# rpm -ivh
/mnt/cdrom/RedHat/RPMS/telnet-server-0.17-20.i386.rpm
[root@rh73 ~]# rpm -ivh
/mnt/cdrom/RedHat/RPMS/xinetd-2.3.4-0 ......
3. GDB的实现
GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序。可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况。它的实现也是基于ptrace系统调用来完成的。
其
原理是利用ptrace系统调用,在被调试程序和gdb之间建立跟踪关系。然后所有发送给被调试程序的信号(除SIGKILL)都会被gdb截 ......