共 8 页, « 第一页 ... « 2 3 4 [5] 6 7 8 »
前面介绍cygwin下安装sshd时简单地提到了ssh的公钥认证。 下面将这种认证方式详细地解释一下。
阅读全文 »查看myprog(二进制文件)依赖的库文件
ldd myprog
查看myprog的符号表
nm myprog
删除myprog中的符号,减小文件大小
strip myprog
myprog的详细信息
readelf -a myprog
另外这篇文章可以在调试时作为参考。
最近在用 perl 写一个Linux下的多进程守护进程,因此研究了一下Linux下的进程相关的知识。 现将心得总结一下。主要是关于进程创建和回收。
阅读全文 »前面这篇文章简单地阐述了用Perl创建守护进程(daemon)的方法。 实际上,创建一个多进程的守护进程需要注意很多事情。
阅读全文 »sshd服务是一种安全连接,它能让你访问服务器上的命令行界面。Windows本身没有提供该服务,所以我们可以通过 cygwin 来进行安装。
阅读全文 »如何在Linux下创建这样一个程序,执行之后返回shell,但程序本身驻留在内存之中继续执行?其实很简单,创建一个子进程,然后父进程结束即可。例如下面的Perl程序:
#!/usr/bin/perl
exit if fork(); # 创建子进程,然后父进程退出
while (1) { sleep 1; } # 测试用死循环
不过需要考虑到一点,守护进程通常在系统启动时以root身份启动,但是由于安全问题,通常并不以root身份运行。这一点使用perl如何实现呢?可以使用下面的 sudo 函数。
sub sudo {
my ($user, $group) = @_;
my $uid = (getpwnam($user))[2];
my $gid = (getgrnam($group))[2];
($(, $)) = ($gid, "$gid $gid");
($<, $>) = ($uid, $uid);
}
所以,一个基本的守护程序应当这样写:(sudo函数代码省略)
#!/usr/bin/perl
&sudo("myuser", "mygroup"); # myuser、mygroup为启动守护进程的用户和组
exit if fork();
while (1) { sleep 1; }
| 信号 | 值 | 动作 | 解释 |
| SIGHUP | 1 | 终端线路挂断 | |
| SIGINT | 2 | Term | 键盘输入的中断命令,从终端输入 Ctrl-C 时发生 |
| SIGQUIT | 3 | Core | 键盘输入的退出命令 |
| SIGILL | 4 | Core | 错误指令 |
| SIGABRT | 6 | Core | abort(3)发出的中止信号 |
| SIGFPE | 8 | Core | 浮点数异常 |
| SIGKILL | 9 | Term | KILL信号 |
| SIGSEGV | 11 | Core | 非法内存访问 |
| SIGPIPE | 13 | Term | 管道断开 |
| SIGALRM | 14 | Term | alarm(2)发出的中止信号 |
| SIGTERM | 15 | Term | 强制中止信号 |
| SIGUSR1 | 30,10,16 | Term | 用户自定义信号1 |
| SIGUSR2 | 31,12,17 | Term | 用户自定义信号2 |
| SIGCHLD | 20,17,18 | Ign | 子进程中止信号 |
| SIGCONT | 19,18,25 | Cont | 继续执行一个停止的进程 |
| SIGSTOP | 17,19,23 | Stop | 非终端来的停止信号 |
| SIGTSTP | 18,20,24 | Stop | 终端来的停止信号 |
| SIGTTIN | 21,21,26 | Stop | 后台进程读终端 |
| SIGTTOU | 22,22,27 | Stop | 后台进程写终端 |
常用的包括 SIGHUP(服务进程重起)、SIGKILL(进程结束)等。
下载并安装 httpd 2.2。
$ tar xjvf httpd-2.2.3.tar.bz2 $ cd httpd-2.2.3/ $ ./configure --enable-rewrite --enable-so $ make $ sudo make install
下载并安装 mysql-3.23。
$ sudo tar xzvf mysql-3.23.58-pc-linux-i686.tar.gz -C /usr/local/mysql $ sudo groupadd mysql $ sudo useradd -d /usr/sbin -s /bin/false -g mysql mysql $ sudo chown -R mysql.mysql /usr/local/mysql $ cd /usr/local/mysql $ sudo ./scripts/mysql_install_db $ sudo cp support-files/mysql.server /etc/init.d/mysql $ /etc/init.d/mysqld start
下载并安装 php 5.1.6。
$ sudo apt-get install flex bison libxml2-dev
$ tar xjvf php-5.1.6.tar.bz2
$ cd php-5.1.6/
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd
--with-gettext --with-mysql --with-zlib-dir=/usr/lib
--with-mysql=/usr/local/mysql
在 /boot/grub/menu.lst 的内核命令后加上 vga=nnn (nnn为整数)参数可以使用高分辨率的命令行界面。其值如下。
| 640x480 | 800x600 | 1024x768 | 1280x1024 | |
| 8bit | 769 | 771 | 773 | 775 |
| 15bit | 784 | 787 | 790 | 793 |
| 16bit | 785 | 788 | 791 | 794 |
| 24bit | 786 | 789 | 792 | 795 |
我们知道,在KDE中可以通过窗口管理器方便地将窗口设置为总在最前、设置出现在所有工作区等, 但是Ubuntu 6.06的Gnome中无法做到这一点。Gnome所用的窗口管理器MetaCity认为这些不是窗口管理器的任务, 因此没有实现这些功能。好在Gnome的一名开发者为我们开发了 Devil's Pie 这个程序,它能够根据预先设定的动作自动控制Gnome中的窗口。
阅读全文 »


