Linux常见疑难问答html
(1)按a~z顺序排列启动服务进程。java
#exportLC_ALL=C #英文环境变量设置,主要用于解决乱码问题node
#chkconfig –list | grep [z-a] : | grepon $ sortmysql
(2)显示运行级别为5的全部服务。linux
#chkconfig –list | grep 5: on | sortweb
(3)如何中止某个(如cups)服务。算法
#chkconfig cups off ; /etc/init.d/cups stopsql
(4)修改了/etc/profile文件配置,怎么当即生效。shell
#source/etc/profile以及“/etc/profile”点后面是空格。数据库
(5)如何使用find工具找到用户cgweb在30天内的文件并备份归档。
#find / -user cgweb –ctime -30 –exec tar azvf /home/backup/cgweb -new-files.tgz {} \;
(6)如何将分区表信息转成文件。
#fdisk –l /dev/sda > /etc/config-data/sda-fdisk.txt #注意:要先创建config-data目录
如何将硬盘分区表和MBR备份到文件:
#dd if=/dev/sda of=/etc/config-data/sda-boot.img bs=512 count=1
(7)如何提升TCP/IP堆栈安全。
一般有个办法是经过“#echo1>/proc/sys/net/ipv4/tcp_syncookied”来阻止SYNFlood攻击,其实这并不安全,可靠的作法是发送到/etc/sysctl.conf文件中,须要将下列代码加到/etc/sysctl.conf中:
net.ipv4.tcp_syncookies=1
net.ipv4.ip_default_ttl=61
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
若是机器多的话能够将这个配置文件存储在FTP服务器(如sysctl-add,服务器IP:10.10.10.1),而后从FTP中提取出来,追加到现有的/etc/sysctl.conf文件尾:
wge tftp://10.10.10.1/pub/sysctl-add
catsystl-add >>/etc/sysctl.conf
(8)如何把/var目录下的全部RPM文件找出来并删除。
#find /var –name "*.rpm" –exec rm {}\;
(9)如何使用SSH在远程主机(10.10.10.1)上创建目录(upload)并上传文件。
#ssh root@10.10.10.1 mkdir/var/www/html/upload
#scp *.cfg root@10.10.10.1 : /var/www/html/upload/
(10)如何用find命令查找某个文件夹下包含全部指定关键字的全部文件。
例如须要查找/etc/tomcat5目录下,包含JAVA_OPTS关键字的全部文件:
#find /etc/tomcat5 -name "*" | xargs grep "JAVA_OPTS"
(11)把旧系统上的/etc/passwd和/etc/shadows复制到新系统里,能够继续使用吗。
千万不要在新的机器上复制原来的/etc/apsswd,一般在新旧两个系统之间有不少服务都会产生冲突,若是是同一张盘安装出来的系统,那么能够验证一下系统的crypt/hash函数是否相同(即密码采用相同的算法加密的),切忌不要在新系统中的配置文件上复制整个/etc/的配置文件。
(12)如何实时查看日志文件的信息(排除网络故障时经常使用,例如DNS、DHCP调试问题)。
#tail –f /var/log/messages #如不用-f选项,默认状态的tail只能列出文件的最后10行
(13)如何找到/etc/目录下全部文件中,内容包括字符串“ip_forward”的文件,并打印到屏幕。
#find /etc/ -exec grep "ip_forward" '{}' \;-print
(14)如何搜索当前系统里文件大小超过1GB的文件(排除磁盘空间方面的故障时经常使用)。
#find / -size +1024000k –exec du –h '{}' \; -print
(15)远程服务器上没有磁带机,怎么对它进行异地备份。
#tar cvf -/home/etc | ssh root@10.101.10.1 "cat > /mnt/backup/remoteserver 1_$
(date+%Y-%m-%d).tar"
SSH对于管理员来讲是再熟悉不过了,那么如何利用它从Linux服务器经过网络传输标准输出(stdout)到备份服务器呢?以上命令便可,注意date后面有个空格。
(16)普通用户cgweb登陆系统后如何在根用户才能访问的位置中新建目录呢。
# su --c "mkdir /root/cgwebtmp"
(17)如何只显示top里的几个进程。
若是只显示几个进程,可在top中输入要查看进程的PID:
#top –p 4300 –p4500
(18)如何查看一个命令在执行期间发生了什么系统调用。
#strace /bin/ping 10.10.10.12 > /tmp/ping_out
在这行命令中,经过在strace命令中运行ping命令并将标准错误定向到/tmp/ping_out文件,不少处理消息就会发送到ping_out文件中。若是要查看ping从哪里得到了它的信息,则将找到全部出现open的地方来查看它打开过哪些文件:
#grep ^open /tmp/ping.out
除此以外,还可让它跟踪子进程,例如要跟踪open系统在上面例子中的调用:
# strace –e trace= open/bin/ping 10.10.10.1
除了打开库以外,ping命令还打开了配置文件resolv.conf来查找IP地址,进而找出它从何处将域名解析为IP地址。
(19)如何测定X server服务器的性能。
当显卡驱动装好后可以使用下列命令来检测Xserver服务器的性能:
# X11perf –repeat 3 –reps 10 –subs 10 100 –circulate
上述例子的X11perf命令从下至上运行一套窗口。circulate动做将重复3次,第一组有10个窗口,分别运行10次(共100次循环运行),第二组有100个窗口,依然分别循环运行10次(共1000次循环)。在每组的最后,将显示出重复的总次数和完成整套动做所花费的时间。
还能够用下列命令来测试性能:
#X11perf –repeat 2 –reps 1000 –ftext
将1000个包含80个字符的文本发送给显示器(-ftext):
#X11perf –repeat2 –reps 500 –copywinwin 500
从一个窗口把500×500平方像素大小的方块复制到另外一个窗口(-copywinwin500):
#X11perf –repeat2 –reps 800 –scroll 500
垂直滚动500×500平方像素大小的框800次。
(20)如何查看安装的GPG密钥。
#rpm –qa gpg-pubkey*
gpg-pubkey-0dfb3188-41ed929b
其中gpg-pubkey-0dfb3188-41ed929b表明RedHat公司用于签名软件包的共有密钥。若是想得到有关这种公有密钥的信息,能够继续使用RPM命令:
#rpm –qi gpg -pubkey -0dfb3188-41ed929b|less
在输出的Summary代码行中密钥表示为适用于OpenEnterpriseServer,最后输入q退出。
(21)如何检查包的签名信息。
经过如下命令能够检查RPM遭破坏和修改的内容:
# rpm –check sig– vv fedora-logos-1.2.-1.noarch.rpm
(22)在Xen下安装虚拟机。
#virt-install-nvm-mysql-r512-f/vm/vm-mysql.img-s10--nographics-p-lftp://ip/pub/iso
经过上面很简单的一句代码就能够在Xen下安装虚拟机了。
(23)查看当前的TCP链接数。
除了使用常规的netstat-na|more等命令之外,还可利用如下命令实现精确统计链接数量:
#netstat -n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'
TIME_WAIT29
FIN_WAIT1152
FIN_WAIT22
ESTABLISHED26
SYN_RECV16
(24)访问远程共享的目录。
将以下代码放到/etc/fstab中:
//ip/share1/mnt/dsmbfsdefaults,auto,username=name,password=pass00
其中,IP是远程机器的IP地址,是共享目录的共享名,“/mnt/d”是要将该分区mount到本地Linux的目录,name和pass是能够访问该共享目录的用户名和密码。
(25)如何加大Tomcat链接数。
在Tomcat配置文件server.xml中,应同时加大maxProcessors和acceptCount这两个参数的值。
(26)如何修改Tomcat的端口数。
编辑/etc/tomcat5/server.xml找到其中的connectorport="8080"maxHttpHeaderSize="8192",这一行更改8080这个值为其余1024以上未用端口便可。
(27)如何加大Tomcat的内存。
Tomcat默认的内存为128,在一些大型应用上,显然不够用,因此咱们须要手动加大内存:
#vi /etc/tomcat5/tomcat5.conf
找到“JAVA_OPTS=-Xmin0.1–Xmaxf0.3”代码,Xmin0.1表示初始内存大小,更改为Xmin256m,Xmaxf0.3表示最大内存大小,修改成512m,退出重启便可生效。
(28)如何将大的tar包分卷压缩或合并。
以每卷500MB为例,tar分卷压缩:
#tar cvz pf -somedir | split -d -b 500m
-d不是split的选项,是Shell的选项,表示将tar命令的输出做为split的输入。
tar多卷合并:
catx*>mytarfile.tar.gz。
(29)如何去掉文本中多余的回车符(尤为是从Windows复制到Linux的状况)。
sed's/^M//'test.sh>back.sh
注意“^M”是敲“ctrl+V+M”获得的。
或者:
dos2unixtest.sh
(30)如何改变RedHat的系统语言/字符集。
将vi/etc/sysconfig/i18n文件修改为:LANG="en_US",X-window会显示英文界面,修改成:LANG="zh_CN.GB18030",X-window会显示中文界面。
(31)查找权限位为S的文件。
#find . -typef\(-perm-04000-o-perm-02000\)-execls-lg{}\;
(32)查找或删除正在使用某文件的进程。
fuserfilename
fuser-kfilename
(33)如何让用户的密码必须具备必定的长度,而且符合复杂度。
vi/etc/login.defs
修改PASS_MIN_LEN。
(34)如何删除3天之前的全部内容(包括目录名和目录中的文件)。
1find.-ctime+3-execrm-rf{}\;
2find./-mtime+3-print|xargsrm-f–r
(35)如何不改变inode而清空一个文件。
>filename
(36)Oracle的安装程序为何显示乱码。
如今Oracle的安装程序对中文的支持存在问题,建议使用英文界面来安装,在执行runinstaller以前,执行:
export;exportLC_ALL=C
(37)Linux下文件和目录的颜色表明什么含义。
蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示连接文件;灰色表示其余文件;红色闪烁表示连接的文件有问题了;黄色是设备文件,包括block、char、fifo。利用dircolors–p可查看默认的颜色设置,包括各类颜色和“粗体”、下划线、闪烁等定义。
(38)如何查看有多少活动httpd的脚本,每隔3s刷新一次。
编辑以下脚本:
#!/bin/sh
while(true)
do
pstree|grep"*\[httpd\]$"|sed's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'
sleep3
done
(39)如何让cp命令在运行中显示进度。
cp-r-vdir1dir2
cp-a-d-vdir1dir2
(40)编辑/etc/inittab后不重启电脑,配置直接生效。
initq
(41)让Linux连续执行几个命令,出错中止执行。
command1&&command2&&command3
(42)屏幕变花时怎么办。
当不当心cat了一个并非文本的文件时,屏幕会变花,那么能够按两下“Enter”键,以及“Reset”键,屏幕就可恢复正常了。
(43)在命令行中列出本机IP地址,而不是获得网卡信息。
#ifconfig | grep "inet"|cut-c0-36|sed-e's/[a-zA-Z:]//g'
hostname–i
(44)如何不显示grep进程自己。
#ps -aux | grep httpd | grep -v grep
grep-vgrep能够取消显示所执行的grep自己这个进程,-v参数是不显示所列出的进程名。
(45)删除目录中含输入关键字的文件。
#find /mnt/ebook/ -typef -exec grep"输入关键字"{}\;-print-execrm{}\;
(46)让cron中的任务不回馈信息,假设5分钟检查一次邮件。
0-59/5****/usr/local/bin/fetchmail>/dev/null2>&1
(47)如何开启多个X-window。
startx默认以display:0.0开启第一个X-window,经过传递参数给Xserver能够开启多个X-window:
#startx--:1.0
#startx--:2.0
...
而后利用Ctrl+Alt+F7/F8键进行切换。
(48)如何产生一个长度固定(例如文件长度为1MB)的空文件,即每一个字节的值全为0x00。
#dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024
(49)查找当前目录下的文件并更改扩展名。
例如将当前目录下的全部扩展名为.cf的文件更改成.conf。
#find ./ -name "*.cf"-execrename.conf'{}'\;
(50)如何删除RPM-e删除不了的包。
若是在删除包以前删除了包的目录,执行如下代码:
#rpm -e --noscripts
若是系统里一个包被装两次(因为某些异常引发的),则执行如下代码:
#rpm -emulti-installed-pkgs–allmatches
(51)如何防止某个关键文件被修改。
在Linux下,有些配置文件是不容许任何人(包括root)修改的。为了防止被误删或修改,能够设定该文件的“不可修改位(Immutable)”。命令以下:
#chattr+i/etc/fstab
若是须要修改文件则采用下面的命令:
#chattr-i/etc/fstab
(52)怎样限制一个用户能够启动的进程数。
先肯定一下/etc/pam.d/login文件中以下一行代码是否存在:
sessionrequired/lib/security/pam_limits.so
而后编辑/etc/security/limits.conf,在其中能够设置限制用户的进程数、CPU占用率和内存使用率等,如hardnproc30就是指限制30个进程。
(53)如何限制Shell命令记录的大小。
在默认状况下,bash会在文件$HOME/.bash_history中存放多达500条命令记录。有时根据具体的系统不一样,默认记录条数也不一样。系统中每一个用户的主目录下都有一个这样的文件。为了系统的安全,在此强烈建议用户限制该文件的大小,若是是root用户,更应该减少这个条目数。用户能够编辑/etc/profile文件,修改其中的选项以下:HISTFILESIZE=5或HISTSIZE=5,这样就将记录的命令条数减小到5条。
(54)使用RPM命令时没有任何响应,怎么办。
#rm -rf /var/lib/rpm/__db.*
(55)如何防止用户修改某文件。
对系统中的一些关键文件和我的重要资料,能够经过文件权限来保护,例如将文件属性设为600。另外,若是Linux使用的是ext2或ext3文件系统,还可使用chattr命令,给文件加上i属性,即便root用户也不能直接修改或删除这类文件,以有效防止意外修改状况的发生。具体命令以下:
#chattr +i passwd
可以使用以下命令去除i属性:
#chattr –i passwd
(56)解决WebLogic在Linux下启动关闭很慢的问题。
启动、关闭WebLogic时,时间很是长,其缘由是JDK中存在一个Bug,解决办法是在WebLogic启动脚本里setDomainEnv.sh加入如下内容:
JAVA_OPTIONS="${JAVA_OPTIONS}-Djava.security.egd=file:/dev/./urandom"
exportJAVA_OPTIONS
建议操做前先将setDomainEnv.sh进行备份。
(57)如何实时查看某一进程的资源消耗状况。
首先查看这个进程的PID,假设PID为500。利用“top-p500”命令,就能够实时查看这个进程的资源消耗状况了。
(58)如何删除一类进程。
#ps -efww|grepLOCAL=NO|grep-vgrep|cut-c9-15|xargskill-9
(59)如何手动修改IP。
编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,而后执行以下命令:
ifdowneth0;ifupeth0
(60)如何查看22端口如今运行什么程序。
#lsof -i :22
(61)如何开启IP转发。
编辑/etc/sysctl.conf,例如:
net.ipv4.ip_forward=0
将其修改成:
net.ipv4.ip_forward=1
重启后生效,利用“sysctl-a”查看可知已开启IP转发。
(62)如何容许/禁止root经过SSH登陆系统。
经过修改“sshd_config:PermitRootLoginno|yes”便可实现。
(63)如何让Linux自动同步时间。
#vi /etc/crontab
添加如下代码:
0001**rootrdate-stime.nist.gov
(64)如何让SSH登陆系统永久不断开。
修改本身HOME目录下的.bash_profile文件,加上exportTMOUT=1000000(以s为单位),而后运行source.bash_profile。
(65)防止任何人使用su命令成为root。
在vi/etc/pam.d/su中加入如下代码:
authsufficient/lib/security/pam_rootok.sodebug
authrequired/lib/security/pam_wheel.sogroup=wheel
在/etc/pam.d/su配置文件中定义wheel组。
(66)如何给一块网卡绑定多个IP。
Linux系统中的一块网卡,最多支持256个IP,执行如下代码:
#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#vi ifcfg-eth0:1
修改IP和设备名便可。
(67)Linux下清空ARP表的命令。
#arp-d-a (适用于BSD)
forHOSTinarp|sed'/Address/d'|awk'{print$1}';doarp-d$HOST;done
(68)如何使Linux支持NAT。
#echo1>/proc/sys/net/ipv4/ip_forward
#iptables-tnat-IPOSTROUTING-jMASQUERADE
(69)临时修改网卡MAC地址的方法。
l关闭网卡:/sbin/ifconfig eth0 down
l修改地址:/sbin/ifconfig eth0 hwether 00:AA:BB:CCD:EE
l启动网卡:/sbin/ifconfig eth0 up
(70)更改eth0为混杂模式。
打开网卡eth0,改为混杂模式:
#ifconfig eth0 promisc
关闭混杂模式:
#ifconfig eth0 –promisc
(71)如何让SSH只容许指定的用户登陆。
在/etc/pam.d/sshd文件中加入:
authrequiredpam_listfile.soitem=usersense=allowfile=/etc/sshusersonerr=fail
而后在/etc下创建sshusers文件,编辑这个文件,加入容许使用SSH服务的用户名,从新启动SSHD服务便可。
(72)在Linux下如何绑定IP地址和硬件地址。
能够编辑一个地址对应文件,里面记录了IP地址和硬件地址的对应关系,而后执行“arp–f地址对应文件”。若是没有指定地址对应文件,则一般状况下以默认文件/etc/ethers为准。地址对应文件的格式以下:
192.168.12.100:0D:61:27:58:E3
192.168.12.200:40:F4:2A:2E:DC
192.168.12.300:0A:EB:5E:BA:AE
(73)已知网络中一个机器的硬件地址,如何知道它所对应的IP地址。
在Linux下,假定要查“00:0A:EB:27:17:B9”这样一个硬件地址所对应的IP地址,可使用如下命令:
#cat /proc/net/arp|grep00:0A:EB:27:17:B9
192.168.2.540x10x600:0A:EB:27:17:B9*eth2
另外,还能够利用“arp-a”命令查询:
#arp–a|grep00:0A:EB:27:17:B9
(192.168.2.54)at00:0A:EB:27:17:B9[ether]oneth2
(74)基于Apache的HTTPD或Sendmail服务在启动时被挂起了,如何解决此问题。
遇到此类问题,请确认/etc/hosts文件中是否包含以下一行:
127.0.0.1localhost.localdomainlocalhost
注意:127.0.0.1是网络的回路地址
(75)如何使Linux系统对ping不回应。
要使Linux对ping没反应,也就是使Linux系统忽略ICMP包,可用以下命令实现:
#echo1>/proc/sys/net/ipv4/icmp-echo-ignore-all
若想恢复,可用以下命令实现:
#echo 0>/proc/sys/net/ipv4/icmp-echo-ignore-all
(76)rsync同步压缩传输文件或目录。
rsync-azessh--deletesample_dir/remote_host:remote_dir/sample_dir/
(77)无须输入密码使用SSH密钥登陆。
ssh-keygen-b1024-trsa
sshserver"mkdir.ssh;chmod0700.ssh"
scp~/.ssh/id_rsa.pubserver:~/.ssh/authorized_keys
这样就再也不提示输入密码,直接能够登陆Server了,对文件复制、同步等操做都比较方便。
(78)命令行下发送带附件的邮件。
#cat<mailcontent.txt>|mutt-s"title"-a<attachfile>mail@address
这里:<mailcontent.txt>表明邮件正文内容。<attachfile>表明本地须要做为附件的文件名。
(79)如何增长httpd动态模块,而不从新编译Apache(以deflate模块为例)。
进入httpd源代码目录:
#cd /usr/local/src/httpd-2.2.6
执行httpd安装后目录中的bin/apxs文件:
/usr/local/apache2/bin/apxs-ciamodules/metadata/mod_deflate.c
从新启动httpd:
#service httpd restart
(80)如何变动sendmail邮件的默认存储位置。
若是sendmail使用Procmail做为MDA(邮件投递代理)的话,可使用Procmail来指定接收邮件的默认存储位置。方法以下:
创建/etc/procmailrc文件。
编辑/etc/procmailrc文件,指定环境变量MAIL的路径,如设为“$HOME/mbox”等。
(81)新编译生成的GCC,使用的标准链接库都位于/usr/local/lib下,但使用的默认链接路径是/usr/lib,怎样添加。
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
将其写到“~/.bash_profile”里面便可。
(82)为何编写的Shell脚本没法运行。
脚本权限要为可执行“#chmod+xtest.sh”。且脚本所在的目录在环境变量PATH中,或者直接执行“#./test.sh”。
(83)MySQL的数据库存放在什么地方。
若是使用RPM包安装,应该位于/var/lib/mysql目录下,以数据库名为目录名。
若是源码安装在/usr/local/mysql中,应该位于/usr/local/mysql/var中,以数据库名为目录名。
(84)忘记了MySQL的root口令怎么办。
#service mysql stop
#mysqld_safe--skip-grant-tables&
#mysqladmin -u user password'newpassword''
#mysqladminflush -privileges
(85)让MySQL以大内存方式启动。
将/usr/share/mysql下的某个“mysql-*.cnf”(如1GB内存时为mysql-huge.cnf)复制为“/etc/mysql.cnf”文件,并重启MySQL。
(86)经过SSH挂载远程主机上的文件夹。
sshfsname@server:/path/to/folder/path/to/mount/point
(87)显示消耗内存最多的10个运行中的进程,之内存使用量排序。
#ps aux |sort -nk +4 | tail
(88)利用Shell邮件通知。
#echo "Testmail" | mail -s“主题测试”root@sampl.com
注意:主机的SMTP服务须要启用。
(89)如何在OracleRAC环境中找出因为系统程序崩溃而产生的core文件。
因为系统程序发生崩溃时,内核会把当前内存映射到core文件中,咱们以X86环境为例,使用下面命令找到core的位置,还能看出是由哪一个文件引发的。
#find /u01 -name core.* -exec ls -l thr {}\; | awk'{print$9}' | xargs file
/u01/oracle/product/crs/log/rac1/crsd/core.4107:ELF32-bitLSBcorefileIntel80386,version1(SYSV),SVR4-style,from'crsd.bin'
由上面这条命令,能够看出core.4107的产生,是由“crsd.bin”文件引发的。
(90)如何快速扫描出某网段(例如:192.168.150.0/24)内开机的服务器。
第一种简单方法:
#nmap –sP 192.168.150.*
第二种简单方法,使用一行Shell脚本:
for((i=1;i<=254;i++)); do ping 192.168.150.$i;done
(91)如何禁止某个进程的网络链接。
咱们能够先根据进程找到端口号,而后把发出去的包直接丢掉,或者使用owner功能。
#iptables –m owner –pid -owner <processid> -j REJECT
(92)如何快速关闭SELinux。
#/usr/sbin/setenforce0马上关闭SELinux
#/usr/sbin/setenforce1马上启用SELinux
也能够编辑配置文件达到一样的目的:
#vi /etc/selinux/conf
setSELINUX=disabled
(93)如何监听80端口发给client-A或从client-A发送过来的数据包
#tcpdump –i eth0 host client-A and port80
若是你的计算机有多个网卡,请在-i后面指定好网卡。
(94)如何实现系统某用户登录后不显示用户名称?咱们将系统用户的shell环境变量中/sbin/bash改为/sbin/nologin便可,注意不能将root用户,改为/sbin/nologin,不然没法登录。nologin的做用还能够限制某些用户经过ssh登录到shell上