当前位置:首页 » 操作系统 » linux常见问题

linux常见问题

发布时间: 2022-09-05 22:04:06

1. linux发生问题怎么处理

我们都是人而不是神,出现问题很常见啦,首先,建议你看懂报错的内容,会查看一些log file 文件,比如/usr/share/doc 这个目录是大多数安装在系统中的软件包会包含的一些文档,其次,或许真的难以解决了,可以去各大社区去疯狂的提问,等等
比如:
酷学园认论区 http://phorum.study-area.org
鸟哥癿私房菜馆认论区 http://phorum.vbird.org
telnet://bbs.sayya.org

2. 如何建立linux ssh信任的方法与常见问题

在Linux服务器之间建立信任关系,是很多线上服务系统的基础性工作,这样能便于程序在多台服务器之间自动传输数据,或者方便用户不输入密码就可以在不同的主机间完成登录或者各种操作。

网上关于建立Linux信任关系(ssh trust)的中文文章有一些,但是写得都不太详细,这里汇总了方方面面的资料,把多机信任关系建立方法说说清楚(文/陈运文)

一 建立信任关系的基本操作

基本场景是想从一台Server服务器直接登录另一台,或者将Server服务器的数据不需密码验证直接拷贝至Client服务器,以下我们简称Server服务器为S(待发送的数据文件在这台服务器上),Client服务为C,信任关系的最简单操作方法如下:

1 在S服务器上,进入当前用户根目录下的隐藏目录 .ssh,命令如下:

cd ~/.ssh

(注:目录名前的点好”.”表示该文件夹是一个特殊的隐藏文件夹,ls命令下默认是看不到的,通过 ls –a 命令观察到)

2 生成S服务器的私钥和公钥:

ssh-keygen -t rsa

(注:rsa是一种加密算法的名称,此处也可以使用dsa,关于rsa和dsa算法的介绍可见本文后半章节)

ssh-keygen生成密钥用于信任关系生成

-此时会显示Generating public/private key pair. 并提示生成的公钥私钥文件的存放路径和文件名,默认是放在 /home/username/.ssh/id_rsa 这样的文件里的,通常不用改,回车就可以

然后Enter passphrase(empty for no passphrase): 通常直接回车,默认不需要口令

Enter same passphrase again: 也直接回车

然后会显式密钥fingerprint生成好的提示,并给出一个RSA加密协议的方框图形。此时在.ssh目录下ls,就可以看到生成好的私钥文件id_rsa和公钥文件id_rsa.pub了

以下是各种补充说明:

注1:如果此时提示 id_rsaalready exists,Overwrite(y/n) 则说明之前已经有人建好了密钥,此时选择n 忽略本次操作就行,可以直接用之前生成好的文件;当然选y覆盖一下也无妨

注2:公钥用于加密,它是向所有人公开的(pub是公开的单词public的缩写);私钥用于解密,只有密文的接收者持有。

3 在Server服务器上加载私钥文件

仍然在.ssh目录下,执行命令:

ssh-add id_rsa

系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了

下面有几个异常情况处理:

–如果系统提示:could not open a connection to your authentication agent

则需要执行一下命令:

ssh-agent bash

然后再执行上述的ssh-add id_rsa命令

–如果系统提示id_rsa: No such file or directory

这是系统无法找到私钥文件id_rsa,需要看看当前路径是不是不在.ssh目录,或者私钥文件改了名字,例如如果建立的时候改成 aa_rsa,则这边命令中也需要相应改一下

-如果系统提示 command not found,那肯定是你命令敲错字符了J

-提示Agent admitted failure to sign using the key,私钥没有加载成功,重试ssh-add

-注意id_rsa/id_rsa.pub文件不要删除,存放在.ssh目录下

4 把公钥拷贝至Client服务器上

很简单,例如 scp id_rsa.pub [email protected]:~

5 ssh登录到Client服务器上,然后在Client服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,没有的话可以建立,没有关系)

cat id_rsa.pub >> ~/.ssh/authorized_keys

以下是各种补充说明,遇到问题时可以参考:

注1:这里不推荐用文件覆盖的方式,有些教程直接scp id_rsa.pub 到Client服务器的authorized_keys文件,会导致之前建的其他信任关系的数据被破坏,追加到末尾是更稳妥的方式;

注2: cat 完以后,Client服务器上刚才拷贝过来的id_rsa.pub文件就不需要了,可以删除或移动到其它地方)

注3:ssh-keygen 命令通过-b参数可以指定生成的密钥文件的长度,如果不指定则默认为1024,如果ssh-keygen –b 4096(最长4096),则加密程度提高,但是生成和验证时间会增加。对一般的应用来说,默认长度已经足够胜任了。如果是rsa加密方式,那么最短长度为768 byte

注4:authorized_keys文件的权限问题。如果按上述步骤建立关系后,仍然要验证密码,并且没有其他报错,那么需要检查一下authorized_keys文件的权限,需要作下修改: chmod g-w authorized_keys

OK,现在试试在Server端拷贝一个文件到Client服务器,应该无需交互直接就传过去了。

但是此时从Client传数据到Server服务器,仍然是需要密码验证的。如果需要两台服务器间能直接互传数据,则反过来按上述步骤操作一下就可以了

二 删除服务器间信任关系的方法

如果想取消两台服务器之间的信任关系,直接删除公钥或私钥是没有用的,需要在Client服务器上,打开 ~/.ssh/ authorized_keys 文件,找到对应的服务器的公钥字段并删除

每个段落的开头是ssh-rsa字样,段尾是Server服务器的帐号和ip(如下图红框),需要细心的找一下后删除整段

密钥文件内容和删除Linux服务器间信任关系的方法

三 各种可能遇到的情况和处理方法

–提示 port 22: Connection refused

可能的原因:没有正确安装最新的openssh-server,安装方法如下

sudo apt-get install openssh-server

不支持apt安装的,可以手工下载:

wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz

–关于目录和文件的权限设置

.ssh目录的权限必须是700,同时本机的私钥的权限必须设置成600:

chmod 600 id_rsa

否则ssh服务器会拒绝登录

四 关于RSA和DSA加密算法

在ssh-keygen命令中,-t参数后指定的是加密算法,可以选择rsa或者dsa

RSA 取名自算法的三位提出者Ron Rivest, Adi Shamir, and Leonard Adleman的姓名首字母,作为一种非对称加密算法,RSA的安全性基于及其困难的大整数分解(两个素数的乘积的还原问题)。关于RSA算法原理的文章很多,感兴趣的朋友可以找来读一读。

DSA = Digital Signature Algorithm,基于有限域离散对数难题,是Schnorr和ElGamal签名算法的变种,一般用于数字签名和认证,被美国标准局(NIST)采纳为数字签名标准DSS(Digital Signature Standard),based on discrete logarithms computation.

DES = Digital Encryption Standard. Obsolete standard.

RSA算法好在网络容易实现密钥管理,便进行数字签名,算法复杂,加/解速度慢,采用非对称加密。在实际用于信任关系建立中,这两种方法的差异很微小,可以挑选其一使用。

五 关于SSH协议的介绍

SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议。SSH的主要目的是用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密。防止由于网络监听而出现的密码泄漏,对系统构成威胁。

ssh协议目前有SSH1和SSH2,SSH2协议兼容SSH1。目前实现SSH1和SSH2协议的主要软件有OpenSSH和SSH Communications Security Corporation公司的SSH Communications 软件。前者是OpenBSD组织开发的一款免费的SSH软件,后者是商业软件,因此在linux、FreeBSD、OpenBSD、NetBSD等免费类UNIX系统种,通畅都使用OpenSSH作为SSH协议的实现软件。因此,本文重点介绍一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陆公钥/私钥的格式是不同的,如果想用SSH Communications产生的私钥/公钥对来登入到使用OpenSSH的linux系统需要对公钥/私钥进行格式转换。

第一次登陆后,ssh就会把登陆的ssh指纹存放在用户home目录的.ssh目录的know_hosts文件中,如果远程系统重装过系统,ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆。请注意.ssh目录是开头是”.”的隐藏目录,需要ls –a参数才能看到。而且这个目录的权限必须是700,并且用户的home目录也不能给其他用户写权限,否则ssh服务器会拒绝登陆。如果发生不能登陆的问题,请察看服务器上的日志文件/var/log/secure。通常能很快找到不能登陆的原因。

六 关于ssh_config和sshd_config文件配置的说明

/etc/ssh/ssh_config:

Host *

选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。

ForwardAgent no

“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11 no

“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。

RhostsAuthentication no

“RhostsAuthentication”设置是否使用基于rhosts的安全验证。

RhostsRSAAuthentication no

“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthentication yes

“RSAAuthentication”设置是否使用RSA算法进行安全验证。

PasswordAuthentication yes

“PasswordAuthentication”设置是否使用口令验证。

FallBackToRsh no

“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。

UseRsh no

“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。

BatchMode no

“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。

CheckHostIP yes

“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。

StrictHostKeyChecking no

“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile ~/.ssh/identity

“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。

Port 22

“Port”设置连接到远程主机的端口。

Cipher blowfish

“Cipher”设置加密用的密码。

EscapeChar ~

“EscapeChar”设置escape字符。

/etc/ssh/sshd_config:

Port 22

“Port”设置sshd监听的端口号。

ListenAddress 192.168.1.1

“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key

“HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits 1024

“ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime 600

“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

KeyRegenerationInterval 3600

“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLogin no

“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。

IgnoreRhosts yes

“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes

“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

StrictModes yes

“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

X11Forwarding no

“X11Forwarding”设置是否允许X11转发。

PrintMotd yes

“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

SyslogFacility AUTH

“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO

“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

RhostsAuthentication no

“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no

“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthentication yes

“RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthentication yes

“PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswords no

“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsers admin

“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。

3. 今天启动LINUX系统,没有启动起来,不知道是什么故障

linux系统无法启动的解决办法
导致linux无法启动的原因有很多,智能职涯bigdata-job总结常见的原因有如下几种:
1.文件系统配置不当,比如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。
2.非法关机,导致root文件系统破坏,也就是linux根分区破坏,系统无法正常启动
3.Linux内核崩溃,从而无法启动
4.系统引导程序出现问题,比如grub丢失或者损坏,导致系统无法引导启动。
5.硬件故障,比如主板、电源、硬盘等出现问题,导致linux无法启动。
从这些常见的故障可知,导致系统无法启动的主要有两个问题,硬件原因和操作系统原因,对于硬件出现的问题,只需通过更换硬件设备,即可解决,而对于操作系统出现的问题,虽然出现的问题可能千差万别,不过在多数情况下都可以用相对简单统一的一些方法来恢复系统,下面我们就针对上面提出的几个问题,结合Redhat Linux系统环境,给出一些常用的、普遍的解决问题的方法。
1./etc/fstab文件丢失,导致系统无法启动
/etc/fstab文件存放了系统中文件系统的相关信息,如果正确的配置了该文件,那么在linux启动时,系统会读取此文件,自动挂载linux的各个分区,如果此文件配置错误,或者丢失,就会导致系统无法启动,具体的故障现象是在检测mount partition时出现:
starting system logger
此后系统启动就停止了。
针对这个问题,我们的第一思路就是想办法恢复/etc/fstab这个文件的信息,只要恢复了此文件,系统就能自动挂载每个分区,正常启动。可能很多读者首先想到的是将系统切换到单用户模式下,然后手动挂载分区,最后结合系统信息,重建/etc/fstab文件。
但是这种方法是行不通的,因为fatab文件丢失导致linux无法挂载任何一个分区,即使linux还能切换到单用户下,那么此时的系统也只是一个read-only的文件系统,无法向磁盘写入任何信息。
我们介绍另外一个方法,就是利用linux rescue修复模式登录系统,进而获取分区和挂载点信息,重构/etc/fstab文件。
这里以rhel5为例,首先将系统第一章光盘放入光驱,设置BOIS从光驱启动,这样系统就从光驱引导,然后在boot后输入:linux rescue,接着系统自动开始引导,下面进入网络配置界面,这里是选择是否启用网络,由于系统已经无法启动,我们已经在linux系统上进行操作了,启用网络与否都无所谓。这里选择不启用。下面到了最关键的步骤了,修复模式会自动将系统的所有分区挂载到/mnt/sysimage目录下,选择“Continue”,则修复环境进入到read-write状态下,可以对分区进行读写操作,选择“Read-Only”,修复环境进入到只读模式,由于我们要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。下面是一个友情提示界面,由于fstab文件丢失,修复模式找不到任何可挂载的分区,从这里可知,修复模式在这里也读取/etc/fstab文件,回车,进入下一步。下面就进入了修复环境下,可以进行操作了。上面详细演示了如何进入linux的修复模式,其实很多情况下,linux无法启动时,都可以通过这个方式登录系统进行修复和更改操作。

4. linux 编译内核几个常见问题解决方法

第一次把自己编译的驱动模块加载进开发板,就出现问题,还好没花费多长时间,下面列举出现的问题及解决方案
1:出现insmod: error inserting 'hello.ko': -1 Invalid mole format
法一(网上的):是因为内核模块生成的环境与运行的环境不一致,用linux-2.6.27内核源代码生成的模块,可能就不能在linux-2.6.32.2内核的linux环境下加载,需要在linux-2.6.27内核的linux环境下加载。
a.执行 uname -r //查看内核版本
b.一般出错信息被记录在文件/var/log/messages中,执行下面命令看错误信息
# cat /var/log/messages |tail
若出现类似下面:
Jun 4 22:07:54 localhost kernel:hello: version magic '2.6.35.6-45.fc14.i686.PAE
' should be '2.6.35.13-92.fc14.i686.PAE'
则把 Makefile里的KDIR :=/lib/moles/2.6.35.6-45.fc14.i686.PAE/build1 改为
KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1 //改成自己内核源码路径
(这里的build1是一个文件链接,链接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的)
然并卵,我的fedora 14 /usr/src/kernels下并没有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,虽然不知道两者有什么区别,但改成2.6.35.13-92.fc14.i686还是不行,照样这个问题,还好后来在看教学视频的到启发
法二:改的还是那个位置
KDIR :=/opt/FriendlyARM/linux-2.6.32.2 //把这里改成你编译生成kernel的那个路径
all:
$ (MAKE) -C $ (KDIR) M = $ (PWD) moles ARCH=arm CROSS_COMPILE=arm-linux- //加这句
2. [70685.298483] hello: mole license 'unspecified' taints kernel.
[70685.298673] Disabling lock debugging e to kernel taint
方法:在模块程序中加入: MODULE_LICENSE("GPL");
3. rmmod: chdir(2.6.32.2-FriendlyARM): No such file or directory 错误解决
方法:lsmod 可查看模块信息
即无法删除对应的模块。
就是必须在/lib/moles下建立错误提示的对应的目录((2.6.32.2)即可。
必须创建/lib/moles/2.6.32.2这样一个空目录,否则不能卸载ko模块.
# rmmod nls_cp936
rmmod: chdir(/lib/moles): No such file or directory
但是这样倒是可以卸载nls_cp936,不过会一直有这样一个提示:
rmmod: mole 'nls_cp936' not found
初步发现,原来这是编译kernel时使用make moles_install生成的一个目录,
但是经测试得知,rmmod: mole 'nls_cp936' not found来自于busybox,并不是来自kernel
1).创建/lib/moles/2.6.32.2空目录
2).使用如下源码生成rmmod命令,就可以没有任何提示的卸载ko模块了[luther.gliethttp]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(int argc, char *argv[])
{
const char *modname = argv[1];
int ret = -1;
int maxtry = 10;
while (maxtry-- > 0) {
ret = delete_mole(modname, O_NONBLOCK | O_EXCL);//系统调用sys_delete_mole
if (ret < 0 && errno == EAGAIN)
usleep(500000);
else
break;
}
if (ret != 0)
printf("Unable to unload driver mole \"%s\": %s\n",
modname, strerror(errno));
}
3).把生成的命令复制到文件系统
# arm-linux-gcc -static -o rmmod rmmod.c
# arm-linux-strip -s rmmod
# cp rmmod /nfs/
cp /nfs/rmmod /sbin
代码如下:
proc.c
[html] view plain
<span style="font-size:18px;">#include <linux/mole.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h> /* Necessary because we use the proc fs */
#define procfs_name "proctest"

MODULE_LICENSE("GPL");
struct proc_dir_entry *Our_Proc_File;
int procfile_read(char *buffer,char **buffer_location,off_t offset, int buffer_length, int *eof, void *data)
{ int ret;
ret = sprintf(buffer, "HelloWorld!\n");
return ret;
}

int proc_init()
{ Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
if (Our_Proc_File == NULL) {
remove_proc_entry(procfs_name, NULL);
printk(KERN_ALERT "Error: Could not initialize /proc/%s\n",procfs_name);
return -ENOMEM; }
Our_Proc_File->read_proc = procfile_read;//
// Our_Proc_File->owner = THIS_MODULE;
Our_Proc_File->mode = S_IFREG | S_IRUGO;
Our_Proc_File->uid = 0;
Our_Proc_File->gid = 0;
Our_Proc_File->size = 37;
printk("/proc/%s created\n", procfs_name);
return 0;
}
void proc_exit()
{ remove_proc_entry(procfs_name, NULL);
printk(KERN_INFO "/proc/%s removed\n", procfs_name);
}
mole_init(proc_init);
mole_exit(proc_exit);</span></span></span></span></span>
[html] view plain
<span style="font-size:18px;">

ifneq ($(KERNELRELEASE),)
obj-m :=proc.o
else
KDIR :=/opt/FriendlyARM/linux-2.6.32.2
#KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif</span></span></span></span></span>
make后生成proc.ko,再在开发板上insmod proc.ko即可
执行 dmesg 就可以看到 产生的内核信息啦

5. linux的问题

一、 如何建立多用户

提醒大家一句,别一直使用root用户,因为root用户在系统中有着至高无上的权力,一不小心就可能破坏系统。比如我们想删除/temp目录下的文件却将命令不小心输成“rm
/
temp(在‘/’后多了一个空格)”,那么就极可能删去根目录下的所有文件。再者,“Linux是一个真正意义上的多任务、多用户系统”,不体会一下Linux的特色岂不可惜。为了方便自己和别人使用,就在Linux系统下多建几个用户吧。

输入“adser newuser”,回车,屏幕对命令没有一点儿反应,错啦?不,实际上,系统已接受了新用户。你应该接着输入命令 “passwd
newuser”,屏幕将提示输入口令,再次输入确认, 一个新的用户就增加成功,真简单。马上登录试一试吧。

Linux提供了六个虚拟控制台,用ALT+F1~F6切换(在X-window下用CRTL+ALT+F1~F6切换),每个控制台均可以用不同的用户登录,运行不同的程序。赶快为家人和朋友建个用户吧。

二、在Linx命令行下依次运行:

cd/

tar xzvf rmp-2.3.11.tar.gz

cd rpm-2.3.11

./configure

make

make install

mkdir /var/local /var/local/lib /var/local/lib/rpm /var/lib/rpm

这样,你就完成了RPM的安装,以后便可以在网上或光盘上寻找软件的RPM安装版。然后使用RPM进行安装,RPM的使用方法很简单:

1. 用RPM安装软件包 :rpm -ivh 软件文件名

例如 rpm -ivh fvwm95-2.0.43a.chinese-1.i386.rpm 屏幕上就会输出该软件包的名称和安装的进度条:

fvwm95 ###############

当进度条走到底,中文fvwm95(一种X-Window的界面)就安装完了,再运行X-Window,啊,全中文的fvwm95就在我的眼前。

2. 用RPM反安装软件包:rpm -e 软件名

例如:rpm -e fvwm95

3. 用RPM升级软件包:rpm -Uvh 软件升级版文件名

例如:rpm -Uvh
fvwm95-2.1.0a.chinese-1.i386.rpm,RPM自动反安装原来的老版本,将升级版的软件安装入系统。怎么样,不难吧!

三、如何安装Linux的应用软件

对于普通用户,安装或升级软件可以用Red
Hat公司的软件包安装与管理工具RPM。使用后你就可以轻松安装软件、升级软件和卸载软件并查询软件信息。

如果你安装的是Red Hat Linux,那么你就可以使用RPM了,如果不是,你可以先安装RPM。方法如下:

1. 下载RPM软件包: ftp://ftp.redhat.com/pub/code/rpm/rpm-2.3.11.tar.gz

四 、如何在Windows系统中查看Linux的文件

通过使用装载命令mount,我们能够在Linux中轻松地查阅、使用Windows的文件。俗话说有来有往嘛,我们当然也希望在Windows中能看到Linux的文件。可是Windows可不像Linux那么友好,并未备有与Linux沟通的工具,怎么办呢?别急,网络上有个小工具叫Linuxdos,不到500K,运行在Windows下,专用于查看Linux的文件。运行之后,你可以选择驱动器,然后它就像资源管理器一样列出Linux的文件系统。

五、如何汉化Linux

Linux的母语是英文,所以满屏幕都是“英国老鼠”,用起来特不方便,如果想输入中文更没辙。不过现在的中国软件人员可谓人才辈出,已经为Linux的汉化提供了全面的解决方案。

1.中文模拟终端chdrv

首先,总得让Linux能显示中文吧!chdrv是在命令行下的中文模拟终端,也就是说,只要你装上了它,你就可以在Linux的命令行状态下显示和输入汉字了。chdrv启动后在tty7(用Ctrl+Alt+F7)建立一个虚拟终端,用户在tty7上登录后就可以使用它提供的中文支持。tty1到tty6不会受到它的影响。

如果你能找到RPM格式的安装包,就可以轻松地使用RPM安装程序安装它。否则你可以到ftp://ftp.ihep.ac.cn/pub/chinese/system分别取得
chdrv 的已编译的chdrvbin-0.23.gb.tar.gz和字体文件chdrvfont.tar.gz。然后用root登录,依次执行以下命令:

tar xvzf chdrvbin-0.23.gb.tar.gz 将编译好的chdrv解压到chdrv-0.23.gb目录

mv chdrvfont.tar.gz chdrv-0.23.gb/ 将字体文件移到chdrv-0.23.gb目录

cd chdrv-0.23.gb 进入此目录

./installbin 运行安装文件

2.中文输入服务器xcin

如果你常在X-Window中使用Linux,一定试试用XCIN来解决中文输入的问题。XCIN 是Xwindow Chinese
INput的缩写,是一个在X-Window模式下运行的中文输入系统,安装它后,X-Window的所有终端都将提供中文服务。

你可从ftp://ftp.ihep.ac.cn/pub/chinese/system/xcingb-2.2.tar.gz取得GB码版的XCIN文件包。然后

用root登录,依次执行以下命令:

tar xzvf xcingb-2.2.tar.gz 解压缩

cd xcingb-2.2 进入目录

./configure 修改安装选项

make 编译

make install 安装

同样,如果你能找到该软件的RPM安装版,可以用RPM来安装。

到此为止,我们已经介绍了在命令行下和X-Window中使用中文的方法。可是在文本编辑软件中依然只能显示中文,却无法输入汉字。要解决这个问题必须自己动手修改两个地方:

1) 为不同shell设置

若使用Bash Shell:在 /etc/profile 增加下面的内容:

stty cs8 -istrip

stty pass8

export LANG=C

export LC_CTYPE=iso-8859-1

若使用Tcsh Shell:在 /etc/csh.login 或 /etc/csh.cshrc 增加设定如下:

stty cs8 -istrip

stty pass8

setenv LANG C

setenv LC_CTYPE iso-8859-1

2) 在自己主目录下的.inputrc文件中增加下面的内容:

set convert-meta off

set output-meta on

3.中文的窗口管理器 C-fvwm95

fvwm95就像是Linux英文Win95,中国的Linux用户一直期望有一天能在中文的窗口下使用Linux。这一愿望现在终于成为现实。中国科学院高能物理研究所计算中心的于明俭先生将fvwm95作了汉化,我们终于可以将fvwm95上那些讨厌的英文换成汉字了!大家可以到ftp.ihep.ac.cn/pub/chinese/packages/中下载汉化了的fvwm95的源代码。它所用的字库也可以在ftp.ihep.ac.cn/pub/chinese/fonts/pcf/中取得。下载文件中附带了安装说明。

4.下载BluePoint Linux Star Preview(蓝点预览版)

蓝点预览版基于Red Hat,内含:中文内核(kernel);控制台中文显示/输入;中文Xserver(CXWIN
0.6),X的中文显示/输入;汉化Message和相应库文件,经过中文化和本地化处理的NLS message和库文件。

a. 中文内核

1. 性能卓越, 内核实现中文支持,占用资源极少,速度极快.

2. 多语言支持, 同屏显示多内码(GB/BIG5).

3. 兼容性极好,内核兼容上层应用程序,最彻底的解决办法.

4. 支持高分辨率, 完全取决与用户自己的硬件限制.

5. 支持各种字体,支持简繁字体共14种.

6. 热键切换语言环境(GB/BIG5/EN).

b. 中文Xserver

1. 兼容性好,至少95%的纯西文应用软件可以支持中文处理.

2. 内置输入和显示支持,使用非常方便,无须另外安装输入模块.

3. TTF字库支持.

4. 支持GB/BIG5内码.

c. 汉化Message和相应库文件

1. 提示中文化,开机、关机和常用软件的消息提示全部中文显示。

如果需要安装中文xwindow和输入法,则需要下载star-cxwin.tar.gz. 如果需要安装中文控制台及语言环境,
则需要下载star-zhcon.tar.gz 如果需要在控制台上使用24点阵汉字库, 请下载star-font24.tar.gz
注意:别忘了下载Install安装脚本! 在安装前请仔细阅读README和 常见问题问答!

安装方法

1) 创建一个目录, 将所有下载来的文件放在里面.

2) 以root身份执行安装脚本: # bash Install

3) 安装脚本会先检查系统的配置,还会自动搜索TTF字库, 接下来就是对旧配置文件 进行备份, 最后

开始安装.

4) 完成安装, 如果安装了中文控制台环境, 则需要重新启动.

六、如何设置声卡

不用我说,这可是十分要紧的工作!不过如果你安装了RED HAT Linux,则这项工作就简单了!

用root登录系统,运行/usr/sbin/sndconfig。出现选择声卡类型的画面。一般声卡可以选取Sound Blaster 。

选完声卡后再设置有关的资源。用TAB键结合方向键作出选择后,按OK,如果听到Linus(Linux的创始人)说话的声音,就说明声卡设置成功了。真像老式DOS游戏的声卡设置……

6. 假如Linux卡住了怎么解决

Linux系统卡死了解决办法:
一.
1、按 Ctrl-Alt-F1(F1-F6 一般来说都可以),然后等一会儿,就会切换到 tty,也就是所谓的文字界面。

2、这个时候需要用用户名密码登入。注意,可能键盘输入的速度比较慢,不过应该还是可以忍受的。

3、下面在提示符后面输入 top 回车,这时会看到一张动态的表,上面列出了耗用资源最多的进程。

4、观察它刷新一两次,按q退出,然后输入 kill ,其中的 PID 你可以在 top 里面看到。这个时候应该会快了不少,如果你发现没有成功结束掉,就再输入 kill -KILL ,这次基本上就没问题了。
二.
1、大家在键盘上找,可以找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete。

2、以台机为例,要使用这种方法需要按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键,按完 b 系统就会重启。更多Linux知识可参考《Linux就该这么学》。

7. 关于linux的问题

链接缺乏目标文件

set_msq这个函数在哪个.o文件里面?编译的时候加上这个
否则就报错
总结经验如下:
undefined reference error错误的原因是:
1. 没有指定对应的库(.o/.a/.so) 使用了库中定义的实体,但没有指定库(-lXXX)或者没有指定库路径(-LYYY),会导致该错误,
2. 连接库参数的顺序不对 在默认情况下,对于-l 使用库的要求是越是基础的库越要写在后面,无论是静态还动态
3. gcc/ld 版本不匹配 gcc/ld的版本的兼容性问题,由于gcc2 到 gcc3大版本的兼容性存在问题(其实gcc3.2到3.4也一定程度上存在这样的问题) 当在高版本机器上使用低版本的机器就会导致这样的错误, 这个问题比较常见在32位的环境上, 另外就在32位环境不小心使用了64位的库或者反过来64位环境使用了32位的库.
4. C/C++相互依赖和链接 gcc和g++编译结果的混用需要保证能够extern "C" 两边都可以使用的接口,在我们的64位环境中gcc链接g++的库还需要加上 -lstdc++,具体见前文对于混合编译的说明
5. 运行期报错 这个问题基本上是由于程序使用了dlopen方式载入.so, 但.so没有把所有需要的库都链接上,具体参加上文中对于静态库和动态库混合使用的说明

8. Linux分区问题

怎么分区要看你装linux用来干什么了
个人学习,建议硬盘分出10g来,完全安装也够用了就,分区也不用搞那么多,有\,swap也就行了。
架设服务器的话,就需要用上你全部的硬盘了,分区也该适当的分清楚点了。

针对不同阶段不同水平的linux使用者,给出比较合理的分区方案以供大家参考.

一.linux新人

对于这类linux sir 他们往往是对linux比较好奇,刚刚听说这个系统,对这个系统没有任何感性的了解.在这种情况下,他们安装linux的目的通常是满足一下好奇心或者是求异的心理,(和当初的我一样).对于linux能给他们带来什么,到底有什么用,他们没有明确的目标,也许今天刚刚装上去,明天就觉得linux是一滩难用的垃圾,于是就跑到他们心爱的Windows系统下去了.

他们即要尝尝鲜又不肯马上轻易舍弃心爱的Windows.所以,对于这样刚刚接触linux系统的新人,没有必要花很多心思去考虑如何把硬盘分区分得合理和高效.对于这些用户,只需要满足一下两点:

1.windows 无论如何要保留着,而且在分区的时候不能破坏原来的系统.

2.确保linux 能装上并且可以运行.

所以不能破坏原来的分区来重新给整块硬盘分区,所以常用的方案是采用现有的Windows分区来装linux系统. 通常使用windows中的最后一个盘,即最后一个分区来安装linux系统.

假设原来Windows系统中有6个分区: C,D,E,F,G,H通常的建议是把最后一个分区作为安装linux的根分区.linux完全安装需要5G左右的空间(指目前比较流行的Redhat8 Redhat9等).千万不要惊讶linux为何会耗费掉这么多空间,其实linux系统本身并不大,而且可以十分灵活的定制,小到几M,大到几G的空间上都可以装上不同用途,不同性能的linux系统.之所以完全安装要费5G的空间,是应为这5G中除了基本的系统外还包括了各种的数据库,OFFICE套件,各种应用程序,各种服务器程序,各种的桌面管理器等,花几十块钱买一套linux系统,你就不必要再花钱买任何常规软件了. 是不是要把这5G的东西全部装上呢?

对于初学者,如果硬盘空间不紧张的话我建议全部都装上,以免今后在安装其他软件的时候遇到各种烦人的动态库倚赖问题和找不到在教材上看到的命令的问题,而初学者又不知道如何装上那些他们在系统安装的时候没有装上的软件,这样就会浪费很多时间走很多弯路.就我而言,我第一次装linux的时候是装的Redhat7.1,由于空间不多,(更多原因是抱着Microsoft Windows不放),所以只分了1G的空间给linux,结果又什么都不懂,在安装的时候才发现默认安装空间不够,结果在不知道KDE是什么,GNOME是什么,X是什么的情况下把KDE和GNOME都勾掉了,只甚下一个X,当我兴致勃勃的按书上写的输入startx 命令后,屏幕上只出现了一个黑色的X一个灰色的背景,和一个闪着提示符的xterm,不知道该如何才好,胡乱在xterm中敲了一个DOS明令dir,结果被我瞎帽遇到死耗子,还真输出了些信息.最后不得不重新分了一个比较大的区再把KDE和GNOME装上.

因此,这里建议初学者第一次装的时候把所有东西都装上,以免遇到各种问题,linux不像Windows,它十分的灵活,但是正因为这一点,它也十分麻烦,如果对它没有一定的了解是很难驾驭它的,所以为了避免麻烦,建议你把所有的东西都装上,在安装的时候选择全部.假如硬盘空间比较紧张,至少也要把安装程序默认的那些东西装上,估计会花费不到2G的空间.也可以不选择"定制",直接选工作站安装方式.等到将来对系统有了一定的了解,知道了自己的需求,明白了哪些东西是自己想要的,哪些对自己来说是多余的的时候就可以根据自己的需求重新划分分区,选择软件安装了. 具体的分区方案如下:

在Windows下把最后一个盘用分区工具删除,如果最后一个盘空间太小的话就把最后两个都删除.删除后硬盘上就有了多于的空间,就可以开始安装系统了,一般来说安装linux需要两个分区,一个是装系统文件的跟分区(/),一个是作为虚拟内存的交换分区(swap),这是和Windows不同的,需要注意.所以,我们可以现在Windows下借助Windows下的分区工具,在刚刚腾出来的空间上建立两个分区,前面一个根分区,后面一个交换分区,交换分区不用很大,按照官方的说法,虚拟内存应该是实际内存的两倍大小,或者是在32M和实际内存两倍这两个值中选较大值,这是针对内存十分少的老机器的.但是在实际应用中分实际内存的两倍大小显然有点浪费,就如我有256M内存,160M 的交换分区,实际使用中swap只用掉3~5M,即使在使用VMware等及费内存的软件时,swap的耗费量也只有60M,所以分100~200M的swap已经足够了,不闭按照官方文档说的分2倍的实际内存大小,如果你有512M内存难道你真的要分1G的交换分区吗?

注意,如果交换分区的大小小于内存两倍,安装程序会有警告,只要忽略警告继续安装就可以了,个别版本的linux在交换分区小于实际内存两倍的情况下,安装程序将不能通过,比如TURBO linux 6.0 这种情况下可以暂时分一个大点的分区,等装好后再把分区删除,划个小分区挂上.如果发现装好后交换分区不够用了也别急,你可以手工再建立交换文件,这将在后面说明.

分区分好后别急着格式化,linux有自己的文件系统,大部分版本的linux都不能装在Windows的FAT或者NTFS分区上.所以你要做的只是重新启动系统,启动电脑,放入安装光盘,安装程序会帮你格式化你分出的两个分区.其中的安装细节不在本文讨论范围之内,随便买一本入门教材上面都说的很清楚.

二.linux中级用户

对于这些linux Sir ,他们已经学会了linux的基本操作,学会了如何安装软件,常用linux命令等,也知道了linux系统的基本结构和linux跟文件系统下各个目录的意义并且知道了光盘上那么多东西哪些是自己需要的,哪些是自己可能一辈子都不会用到的.于是就想着开始自己定制系统划分出比较合理的分区大小和数目.下面我想以我目前的硬盘划分情况为列,给这些linux进阶用户给一个我自认为比较合理的分区方案.

下面是我的硬盘分区情况(我有两个硬盘,但是系统主要装在第一个,第二个只用来拷贝数据,装装实验性系统等)

Disk /dev/hda: 255 heads, 63 sectors, 2491 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 392 3148708+ 83 Linux
/dev/hda2 393 589 1582402+ 83 Linux
/dev/hda3 590 981 3148740 7 HPFS/NTFS
/dev/hda4 982 2491 12129075 f Win95 Ext'd (LBA)
/dev/hda5 982 1504 4200966 83 Linux
/dev/hda6 1505 2027 4200966 b Win95 FAT32
/dev/hda7 2028 2289 2104483+ 83 Linux
/dev/hda8 2290 2420 1052226 83 Linux
/dev/hda9 2421 2471 409626 83 Linux
/dev/hda10 2472 2491 160618+ 82 Linux swap

Disk /dev/hdb: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 * 1 520 2096608+ b Win95 FAT32
/dev/hdb2 521 910 1572480 83 Linux
/dev/hdb3 911 986 306432 83 Linux
/dev/hdb4 987 1023 149184 83 Linux
[root@gucuiwen root]#

挂装点和空间使用情况:

[root@gucuiwen root]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.0G 2.0G 839M 71% /
/dev/hda2 1.5G 990M 531M 66% /mnt/hda2
/dev/hda5 3.9G 2.8G 986M 75% /mnt/hda5
/dev/hda6 4.0G 1.6G 2.4G 40% /mnt/hda6
/dev/hda7 2.0G 1.2G 745M 62% /home
/dev/hda8 1011M 176M 784M 19% /mnt/hda8
/dev/hdb1 2.0G 1.8G 207M 90% /mnt/hdb1
/dev/hdb2 1.5G 185M 1.1G 14% /mnt/hdb2
none 125M 0 124M 0% /dev/shm
/dev/hda9 387M 180M 188M 49% /var

我把第一个硬盘分了三个主分区,以便在安装多套系统的时候互不影响.至于为什么要分三个主分区,我在<充份利用多个主分区安装多套系统>一文中已经说过.其好处是很多的.详见:

http://go.6to23.com/gucuiwen/linux

我的硬盘虽然只有2OG,但是我却分了9个分区,这也是为了管理方便经过多次划分后做出的选择. 首先我把linux的跟(/)装在第一个主分区hda1.这个分区大小为3G,这上面包括:
/boot
/bin
/dev
/etc
/lib
/sbin
/usr

还有空目录和挂装点:
/opt
/mnt
/initrd
/var
/home
/proc
/misc

由于/boot /bin /dev /etc /lib /sbin 下的东西都比较小,没有必要单独划分分区挂装他们,事实上把这些目录单独划分区挂装反而不利,应为这些目录中放着系统启动时的关键信息和文件,系统启动之初却只挂装上/分区,因此,万一其中的某一个分挂装失败系统将不能正常启动.比如/etc目录中存放着系统软的硬件配置信息,包括分区的挂装点分区类型等配置信息,系统启动的时候需要读取这些信息,如果把/etc单独放在一个小的分区上,系统启动的时候到哪里去读分区的挂装点信息呢?类似的/sbin /dev等必需放在根分区上. 只有/boot中存放的是系统内核和引导工具,某些情况下为了解决一些老主板不支持大硬盘的情况下,才单独在硬盘1024柱面以内分一个小分区装/boot的内容.不过目前的主板大多不存在这个问题.另外/usr下的内容一般不经常改变,因此,我也把它放在/目录上.可以看出,我是把所有文件大小不经常变化的,不会引起文件系统碎的所有东西装在/分区上面.

另外,我分了2G的空间存放我自己平时下载的图片和资料以及软件等.挂装在了/home目录,重装系统的时候不动这个分区,就算格式化也只格掉 / 分区, /var 和swap分区,其他分区上的内容都可以保留,在装系统的时候再挂装到系统里.

我的第二个主分区hda2暂时放着些临时文件,平时主要是用来装一些实验性的系统的,比如出了一个新的linux版本,我就把它装在这个分区里体验,而swap /home可以和原来那套系统公用.

我的第三个主分区大小3G,我装了WIN2K系统,由于现在Windows系统使用的比较少了,(主要是给没有电脑的同学用)所以只分派了两个区,一个安装系统和常规的软件,就是第三个主分区 hda3,文件系统格式为NTFS.另外一个是一个逻辑分区hda6大小为4G,文件系统为FAT32,主要用来零时性的装装电影啊音乐啊,虚拟光盘印象GHOST印象文件等.这两个区在Windows下分别显示为C盘和D盘.

下面说说其他的几个逻辑分区:

分区设备名 挂装点 文件系统 大小 作用
/dev/hda5 /mnt/hda5 ext3 4G 存放音乐,电影等大而固定不变的文件
/dev/hda6 /mnt/hda6 FAT32 4G Windows下的D盘
/dev/hda7 /home ext3 2G 我的文档,下载的软件,书籍,图片等
/dev/hda8 /mnt/hda8 ext3 1G 编译大型软件用的零时分区.
/dev/hda9 /var ext3 400M 系统中经常变化大小的日志文件.
/dev/hda10 swap swap 160M 交换分区

对于已经进阶的linux用户,你可能不原意把硬盘分的那么细,甚至不分/home, /usr, /usr/local 但是/var是无论如何都应该分一下的.因为系统的所有日志文件,PID文件,RPM数据库文件等等,这些大小经常发声变化的文件都放在这个目录下,所以这个目录是最容易产生碎片的.如果不单独分一个分区而混在/一起的话,很容易弄乱/文件系统,使系统性能下将,特别是一个多用户环境和一个对外服务的网站主机系统,更应该如此,对于个人用户这个分区有300~500M就可以了.

还有/tmp也是一个文件大小经常变化的目录,但是对于个人用户来说,里面内容很少,单独分一个区也没必要,但和/分区混在一起又总觉得有一种"一滴鼻涕毁一锅粥"的感觉.我的解决方案是把原来的 /tmp目录删除,而作一个到 /var/tmp目录的链接,就像系统本身就有的 /usr/tmp目录一样. 还有 /root 目录大小也经常发生变化,我也把他删除,作了一个到 /var/root的链接,这样,系统中所有大小经常变化,易引起文件系统碎片的东西就全归到 /var 分区上,这就叫"烂也只烂一个苹果",以后可以只整理 /var 分区.

如何整理呢?通常我用一种最简单的办法:

用单用户模式启动系统 LILO: linux single 如果是用GRUB引导,在启动时按字母 a,然后追加内核参数 linux single (这种模式不挂装除/以外的其他文件系统,因此可以安全的对其他分区操作.) 然后删掉一些你认为没用的日志文件,再把/var 全考到其他地方去,接下来删除原来/var 下的所由内容,最后把刚才复制的 /var 分区下的内容拷贝回去,经过这么搬动一次后,文件系统上的碎片就可以消除.ext3本来是一个碎量很少的优秀文件系统,据说比NTFS还要少的多,因此没有必要经常这么做.

这里要提醒一点,把/tmp目录删除链接到 /var/tmp目录后一定要把/var/tmp目录的权限设置为 777否则普通用户将无法启动X.

如下图:

[root@gucuiwen /]# ll
total 189
drwxr-xr-x 2 root root 4096 2月 3 02:21 bin
drwxr-xr-x 3 root root 4096 2月 2 18:36 boot
drwxr-xr-x 20 root root 118784 2月 11 20:10 dev
drwxr-xr-x 59 root root 4096 2月 11 20:10 etc
drwxr-xr-x 22 root root 4096 2月 10 16:53 home
drwxr-xr-x 2 root root 4096 6月 22 2001 initrd
drwxr-xr-x 7 root root 4096 2月 6 23:29 lib
drwx------ 2 root root 16384 2月 3 01:54 lost+found
drwxr-xr-x 2 root root 4096 8月 27 2002 misc
drwxr-xr-x 12 root root 4096 2月 8 20:57 mnt
drwxr-xr-x 2 root root 4096 8月 24 1999 opt
dr-xr-xr-x 73 root root 0 2月 12 2004 proc
lrwxrwxrwx 1 root root 10 2月 2 18:29 root -> /var/root/
drwxr-xr-x 2 root root 8192 2月 6 23:29 sbin
lrwxrwxrwx 1 root root 9 2月 2 18:29 tmp -> /var/tmp/
drwxr-xr-x 17 root root 4096 2月 2 20:16 usr
drwxr-xr-x 23 root root 1024 2月 7 21:57 var
drwxr-xr-x 8 root root 4096 2月 6 23:25 www
[root@gucuiwen /]# ll -d /var/tmp
drwxrwxrwt 14 root root 1024 2月 12 01:04 /var/tmp
[root@gucuiwen /]#

当然由于很多用户还舍弃不下Windows系统,并且大部份时间都在用Windows系统,所以可以把我格式化成ext3格式的 hda5 hda7等分区格式化成fat32文件系统,这样在Windows和linux下都可以很方便的使用这些分区,两者兼顾.这里的方案也只是一个范例,用户可以根据自己硬盘的实际大小来划分.

三.系统管理员和网站管理员

对于这些用户,我想也不必要多说了,他们通常都是玩转系统的老手,把linux系统把玩的随心所欲,拿捏的恰到好处,他们总能根据实际需求定制出一个完美的方案.

对于一个服务器上的系统 /var /tmp /usr /home等目录是肯定要单独分区的,对于大型的站点,每天的系统日志都有好几百M,单独分一个几G大的/var分区甚至单独分派一个硬盘都是不为过的./tmp下的文件也不会像个人用户的系统那样只有几M的文件,所以对于一个服务器系统,分一个/tmp分区或者单独挂一个硬盘是每个系统管理员都会做的事情.除了这些目录外通常还需要分一个/usr/local分区,因为服务器上通常需要安装大量的软件.

对于大型的FTP服务器,HTTP服务器和代理服务器等,通常还要单独划出分区分区或者分派硬盘来存放文件.这些内容对于初学者来说不会遇到,所以就不多说了.

附: linux 分区的常见问题

1.只有一个分区可以装linux吗?

完全可以,linux的虚拟内存并不一定要单独分一个swap分区,也可以像Windows系统那样,在系统所在的分区划出空间来做虚拟内存.只是单独分出一个分区来作swap的话性能比在系统分区上划空间做swap要好.对于某些版本的linux,如果没有swap分区,安装程序会不允许安装,对于这些版本,可以先划一个大的区或暂时用一个没有用的Windows分区做swap,骗过安装程序,然后再装.

2.如何在一个分区上划出空间来做swap?

选一个有足够空间的分区用如下命令:

#dd if=/dev/zero of=swapfile bs=1k count=50000

这样就得到了一个大小为50M的连续文件(作swap的文件必需连续) 然后把这个50M的文件"格式化"成swap文件:

#mkswap swapfile

最后启用这个swap文件

#swapon swapfile

用free命令查看一下,是不是 swap多了50M呢? 可以把这个命令写进 /etc/rc.d/rc.local 中,让系统启动的时候自动开启swap.

如果是把整个分区做swap可以这样:
#mkswap /dev/hda? (?为具体的分区号)
#swapon /dev/hda?

3.linux最多支持多少个swap分区?

16个 (新版的可能支持更多)

4.如何备份linux系统?

专业的网站和多用户系统通常用磁带机等专用备份设备,对于个人用户最简单的办法是直接拷贝一份到空的分区上,等原系统坏了就用备份系统,给内核添加root=?参数就可以启动备份系统.比如你把系统备份在 /dev/hda6上,给内核参数 LILO:linux root=/dev/hda6 就可以启动备份系统,也可以直接写进lilo.conf,达到两套linux系统共存一块硬盘同时使用的目的.另外目前最新版本的GHOST已经可以支持EXT3文件系统的备份.

5.如何"格式化"一个分区?

其实,我们通常所说的"格式化",真正的含义是创建文件系统,"格式化"的最初的意思是我们平时说的"低级格式化".只有"低级格式化"才是真正的"格式化",而平时大家说的"格式化"或者"高级格式化"只是创见文件系统,由于微软的系统里一直不区分这两个概念的含义,所以谎言重复一千遍就成了真理,把"创见文件系统"统一说成了"格式化".

在linux系统里可以用 mkfs (make filesysge 创建文件系统) 来"格式化"一个分区.

#mkfs -t ext2 /dev/hda1

#mkfs.ext2 /dev/hda1
把 /dev/hda1"格式化"成ext2格式
#mkfs -t ext3 -c /dev/hda1

#mkfs.ext3 -c /dev/hda1
把 /dev/hda1"格式化"成ext3格式,并监查硬盘坏块
#mkfs -t vfat /dev/hda1

#mkfs.vfat /dev/hda1
把 /dev/hda1"格式化"成FAT32格式
#mkfs -t msdos /dev/hda1

#mkfs.msdos /dev/hda1
把 /dev/hda1"格式化"成FAT16或FAT12格式(具体由容量决定)
#mkfs -t minix /dev/hda1

#mkfs.minix /dev/hda1
把 /dev/hda1"格式化"成minix格式
对于软盘可以这样:
# fdformat /dev/fd0H1440 (注意,这里真正的格式化,即所谓的低级格式化)
#mkfs.msdos /dev/df0

9. linux的相关问题

1 test -d
文件测试

test命令也可以用于检查文件的状态

-e 文件存在则为真

-r 文件存在并且可读则为真

-w 文件存在并且可写则为真

-x 文件存在并且可执行则为真

-s 文件存在并且至少有一个字符则为真

-d 文件存在并且为目录则为真

-f 文件存在并且为普通文件则为真

-c 文件存在并且为字符型文件则为真

-b 文件存在并且为块特殊文件则为真

-a并且 -o或者 !非
2 能为myfile1更新时间的命令____touch
3 linux中的归档解档命令____tar
4 编译是优先级的取值范围是:______,默认的优先级是____
中进程的优先极是由进程的nice值决定的,值越小,优先级越高

5 linux中标准设备文件有哪些.分别用什么符号表示.
----------------------------------------------------------------------
主设备号 设备类型
次设备号=文件名 简要说明
----------------------------------------------------------------------

0 未命名设备(例如:挂载的非设备)
0 = 未空设备号保留

1 char 内存设备
1 = /dev/mem 直接存取物理内存
2 = /dev/kmem 存取经过内核虚拟之后的内存
3 = /dev/null 空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
4 = /dev/port 存取 I/O 端口
5 = /dev/zero 零字节源,只能读取到无限多的零字节。
7 = /dev/full 满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
8 = /dev/random 随机数发生器。完全由用户的输入来产生随机数。
如果用户停止所有动作,则停止产生新的随机数。
9 = /dev/urandom 更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,
如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
10 = /dev/aio 异步 I/O 通知接口
11 = /dev/kmsg 任何对该文件的写入都将作为 printk 的输出

1 block RAM disk
0 = /dev/ram0 第1个 RAM disk (initrd只能使用ram0)
1 = /dev/ram1 第2个 RAM disk
...
200 = /dev/ram200 第200个 RAM disk

4 char TTY(终端)设备
0 = /dev/tty0 当前虚拟控制台
1 = /dev/tty1 第1个虚拟控制台
...
63 = /dev/tty63 第63个虚拟控制台

4 block 如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主(major)设备的别名
0 = /dev/root

5 char 其他 TTY 设备
0 = /dev/tty 当前 TTY 设备
1 = /dev/console 系统控制台
2 = /dev/ptmx 所有 PTY master 的复用器

7 char 虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs 当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1 tty1 的文本内容
...
63 = /dev/vcs63 tty63 的文本内容
128 = /dev/vcsa 当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1 tty1 的文本/属性内容
...
191 = /dev/vcsa63 tty63 的文本/属性内容代码:
7 block 回环设备(用一个普通的磁盘文件来模拟一个块设备)
对回环设备的绑定由 mount(8) 或 losetup(8) 处理
0 = /dev/loop0 第1个回环设备
1 = /dev/loop1 第2个回环设备
...

8 block SCSI 磁盘(0-15)
0 = /dev/sda 第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb 第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc 第3个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdp 第16个 SCSI 磁盘(整个磁盘)

分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1 第1个分区
34 = /dev/sdc2 第2个分区
...
47 = /dev/sdc15 第15个分区
对于Linux/i386来说,分区1-4是主分区,5-15是逻辑分区。

9 block Metadisk(RAID)设备
0 = /dev/md0 第1组 metadisk
1 = /dev/md1 第2组 metadisk
...
metadisk 驱动用于将同一个文件系统分割到多个物理磁盘上。

10 char 非串口鼠标,各种杂项设备和特性
1 = /dev/psaux PS/2鼠标
131 = /dev/temperature 机器内部温度
134 = /dev/apm_bios APM(高级电源管理) BIOS
135 = /dev/rtc 实时时钟(Real Time Clock)
144 = /dev/nvram 非易失配置 RAM
162 = /dev/smbus 系统管理总线(System Management Bus)
164 = /dev/ipmo Intel的智能平台管理(Intelligent Platform Management)接口
173 = /dev/ipmikcs 智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr 性能监视计数器
183 = /dev/hwrng 通用硬件随机数发生器
184 = /dev/cpu/microcode CPU微代码更新接口
186 = /dev/atomicps 进程状态数据的原子快照
188 = /dev/smbusbios SMBus(系统管理总线) BIOS
200 = /dev/net/tun TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl 增强型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl Message passing technology (MPT) control
223 = /dev/input/uinput 用户层输入设备驱动支持
227 = /dev/mcelog X86_64 Machine Check Exception driver
228 = /dev/hpet HPET driver
229 = /dev/fuse Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot 系统内存快照
232 = /dev/kvm 基于内核的虚构机(基于AMD SVM和Intel VT硬件虚拟技术)

11 block SCSI CD-ROM 设备
0 = /dev/scd0 第1个 SCSI CD-ROM
1 = /dev/scd1 第2个 SCSI CD-ROM
...代码:

13 char 核心输入设备
32 = /dev/input/mouse0 第1个鼠标
33 = /dev/input/mouse1 第2个鼠标
...
62 = /dev/input/mouse30 第31个鼠标
63 = /dev/input/mice 所有鼠标的统一
64 = /dev/input/event0 第1个事件队列
65 = /dev/input/event1 第2个事件队列
...
95 = /dev/input/event1 第32个事件队列

21 char 通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0 第1个通用 SCSI 设备
1 = /dev/sg1 第2个通用 SCSI 设备
...

29 char 通用帧缓冲(frame buffer)设备
0 = /dev/fb0 第1个帧缓冲设备
1 = /dev/fb1 第2个帧缓冲设备
...
31 = /dev/fb31 第32个帧缓冲设备

30 char iBCS-2 兼容设备
0 = /dev/socksys 套接字访问接口
1 = /dev/spx SVR3 本地 X 接口
32 = /dev/inet/ip 网络访问接口
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip

此外,iBCS-2 还需要下面的连接必须存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null代码:
36 char Netlink 支持
0 = /dev/route 路由, 设备更新, kernel to user
3 = /dev/fwmonitor Firewall packet 复制

59 char sf 防火墙模块
0 = /dev/firewall 与 sf 内核模块通信

65 block SCSI 磁盘(16-31)
0 = /dev/sdq 第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr 第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds 第19个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdaf 第32个 SCSI 磁盘(整个磁盘)

66 block SCSI 磁盘(32-47)
0 = /dev/sdag 第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah 第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai 第35个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdav 第48个 SCSI 磁盘(整个磁盘)

89 char I2C 总线接口
0 = /dev/i2c-0 第1个 I2C 适配器
1 = /dev/i2c-1 第2个 I2C 适配器
...

98 block 用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda 第1个用户模式块设备
16 = /dev/udbb 第2个用户模式块设备
...

103 block 审计(Audit)设备
0 = /dev/audit 审计(Audit)设备

128-135 char Unix98 PTY master

这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。

136-143 char Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=<"tty"组的gid>)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
0 = /dev/pts/0 第1个 Unix98 PTY slave
1 = /dev/pts/1 第2个 Unix98 PTY slave
...代码:
153 block Enhanced Metadisk RAID (EMD) 存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0 第1个存储单元
1 = /dev/emd/0p1 第1个存储单元的第1个分区
2 = /dev/emd/0p2 第1个存储单元的第2个分区
...
15 = /dev/emd/0p15 第1个存储单元的第15个分区

16 = /dev/emd/1 第2个存储单元
32 = /dev/emd/2 第3个存储单元
...
240 = /dev/emd/15 第16个存储单元

180 char USB 字符设备
96 = /dev/usb/hiddev0 第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备)
...
111 = /dev/usb/hiddev15 第16个USB人机界面设备

180 block USB 块设备(U盘之类)
0 = /dev/uba 第1个USB 块设备
8 = /dev/ubb 第2个USB 块设备
16 = /dev/ubc 第3个USB 块设备
...

192 char 内核 profiling 接口
0 = /dev/profile Profiling 控制设备
1 = /dev/profile0 CPU 0 的 Profiling 设备
2 = /dev/profile1 CPU 1 的 Profiling 设备
...

193 char 内核事件跟踪接口
0 = /dev/trace 跟踪控制设备
1 = /dev/trace0 CPU 0 的跟踪设备
2 = /dev/trace1 CPU 1 的跟踪设备
...

195 char Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0 第1个 Nvidia 卡
1 = /dev/nvidia1 第2个 Nvidia 卡
...
255 = /dev/nvidiactl Nvidia 卡控制设备

202 char 特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr CPU 0 的 MSRs
1 = /dev/cpu/1/msr CPU 1 的 MSRs
...

203 char CPU CPUID 信息
0 = /dev/cpu/0/cpuid CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid CPU 1 的 CPUID
...代码:
===================================================================
这部分详细说明一些应该或可能存在于 /dev 目录之外的文件。
链接最好使用与这里完全相同的格式(绝对路径或相对路径)。
究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备。

必须的链接
必须在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/fd /proc/self/fd symbolic 文件描述府
/dev/stdin fd/0 symbolic 标准输入文件描述府
/dev/stdout fd/1 symbolic 标准输出文件描述符
/dev/stderr fd/2 symbolic 标准错误文件描述符
/dev/nfsd socksys symbolic 仅为 iBCS-2 所必须
/dev/X0R null symbolic 仅为 iBCS-2 所必须
[注意] /dev/X0R 是 <字母 X>-<数字 0>-<字母 R>

推荐的链接
推荐在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/core /proc/kcore symbolic 为了向后兼容
/dev/ramdisk ram0 symbolic 为了向后兼容
/dev/ftape qft0 symbolic 为了向后兼容
/dev/bttv0 video0 symbolic 为了向后兼容
/dev/radio radio0 symbolic 为了向后兼容
/dev/i2o* /dev/i2o/* symbolic 为了向后兼容
/dev/scd? sr? hard 代替 SCSI CD-ROM 的名字

本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。
这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。
链接 目标 链接类型 简要说明
/dev/mouse mouse port symbolic 当前鼠标
/dev/tape tape device symbolic 当前磁带
/dev/cdrom CD-ROM device symbolic 当前CD-ROM
/dev/cdwriter CD-writer symbolic 当前CD-writer
/dev/scanner scanner symbolic 当前扫描仪
/dev/modem modem port symbolic 当前调制解调器
/dev/root root device symbolic 当前根文件系统所在设备
/dev/swap swap device symbolic 当前swap所在设备

/dev/modem 不应当用于能够同时支持呼入和呼出的modem,因为往往会导致锁文件问题。
如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。

对于SCSI设备,
/dev/tape 和 /dev/cdrom 应该分别指向"cooked"设备 /dev/st* 和 /dev/sr* ;
而 /dev/cdwriter 和 /dev/scanner 应当分别指向恰当的 /dev/sg* 。

/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、
或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata)。

套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:

/dev/printer socket lpd 本地套接字
/dev/log socket syslog 本地套接字
/dev/gpmdata socket gpm 鼠标多路复用器(multiplexer)
/dev/gpmctl socket (LFS-LiveCD中出现)
/dev/initctl fifo pipe init 监听它并从中获取信息(用户与 init 进程交互的通道)

挂载点
以下名称被保留用于挂载特殊的文件系统。
这些特殊的文件系统只提供内核界面而不提供标准的设备节点。

/dev/pts devpts PTY slave 文件系统
/dev/shm tmpfs 提供对 POSIX 共享内存的直接访问
请参考

10. Linux系统工程师面试题附答案

一、简答题

1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:

答:# iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080

或 者:# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

2.什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?

SNAT,DNAT,MASQUERADE都是NAT。

MASQUERADE是SNAT的一个特例。

SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。

MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。

DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B

因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的。

3.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?

4.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。

5.说出你知道的几种linux/unix发行版本。

Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…

6.列出linux常见打包工具并写相应解压缩参数(至少三种)

7.计划每星期天早8点服务器定时重启,如何实现?

8.列出作为完整邮件系统的软件,至少二类。

9,当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存

答:

a.用户输入网址到浏览器;

b.浏览器发出DNS请求信息;

c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;

d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;

e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;

f.返回IP结果给浏览器;

g.浏览器根据IP信息,获取页面;

10,我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?

答:这个题需要理解的东西比较的多,分一下几个方面

a,从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字 解释器通常使用TCP从发原来的请求。

b,从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更 大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP。

11,一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。

答:两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode 耗尽了。

12,我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。

服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的.FTP是指服务器被动地等待客户端连接自己的数据端口。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。

因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

13.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下

Q:主要是考察awk 这些的用法

#/bin/sh

#Programm :

# Using for move currently directory to /tmp

for FileName in `ls -l |awk ‘$5>10240 {print $9}’`

do

mv $FileName /tmp

done

ls -la /tmp

echo “Done! ”

14.apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候加参数–with-mpm- worker选择工作模式)

热点内容
sqlserver数据库名 发布:2024-05-10 21:30:04 浏览:188
密码在什么地方查看 发布:2024-05-10 20:57:08 浏览:973
android中的menu 发布:2024-05-10 20:56:15 浏览:961
php支付宝源码 发布:2024-05-10 20:39:29 浏览:572
pythonlinux安装路径 发布:2024-05-10 20:13:14 浏览:319
户外产品拍摄脚本 发布:2024-05-10 20:08:07 浏览:339
win11支持安卓如何实现 发布:2024-05-10 20:00:54 浏览:587
属于地址解析的服务器 发布:2024-05-10 19:57:14 浏览:401
安卓跨越版本升级什么意思 发布:2024-05-10 19:49:22 浏览:675
linuxoracle静默安装 发布:2024-05-10 19:44:17 浏览:131