您好,欢迎来到微智科技网。
搜索
您的当前位置:首页Linux-问题大全

Linux-问题大全

来源:微智科技网
Linux/UNIX杂项

1. 目录\"/etc/skel\"下的文件将在用useradd创建新用户时被拷贝到新用户的$HOME下。 2. 系统启动的一些知识:

run level 系统的运行级别,一般3是普通的非X,5是X界面的.

/etc/inittab 是init的配置文件,其中每一行用:分割成4列,第一列是标识符,第二列是包含在哪个运行级下,第三列是在那种情况下运行,第四列是运行的命令及参数(id:runlevel:action:process). /etc/inittab第三列参数的常见含义

initdefault定义一个系统启动后进入的运行级

wait会被执行一次的进程 (当进入运行级的时候)init 进程将等待这个进程被终止 boot定义一个启动的时候执行的进程,忽略runlevel的选项

bootwait与 boot 类似 ,不过init在继续运行前等待进程的终止,忽略runlevel的选项 sysinit定义一个进程在 boot的时候执行,在任何boot或者bootwait inittab 条目的前面执行,忽略runlevel的选项

标识为l0-l6的行会通过给rc脚本0-6的参数(rc一般在/etc/rc.d或者/etc/init.d目录下)

/etc/rc.d下的rcX.d目录下是在相应的X运行级时所执行的脚本的符号链接,K 打头的是退出该运行级时执行的,S打头的是进入该运行级执行的,S或K后所跟的数字是运行该脚本的先后顺序,数字小的先行.如果从一个运行级进入另一个运 行级,只kill当前级别有而新级别里没有启动的服务,并开启新的服务.rc脚本会根据相应的S还是K给出参数(如start,stop,restart 等).

一般会有一个boot脚本/etc/init.d下启动一些基本服务,如磁盘缓存更新,动态加载内核模块,挂载文件系统之类的工作,halt脚本为关机是使用得跟boot对应的. SUSE可能会使用/etc/rc.config来配置服务.

SUSE的/sbin/init.d/skeleton是一个制作init脚本的模版.

系统配置文件一般在/etc/sysconfig(redhat是这个)或/etc/rc.config.d目录下.

改网卡配置,修改/etc/sysconfig/network-scripts/ifcfg-eth0或类似的文件,ifdown/ifup eth0生效,SSH之类的远程登录时勿用!

3. 使用 lsof 查找打开的文件

lsof命令会列出当前打开的所有文件,需用root运行,直接从proc读信息 lsof -p PID 可以列出PID进程打开的文件 lsof 文件名 可以列出占用该文件的进程

4. /etc/pam.d 或 /etc/pam.conf 控制着 Pluggable Authentication Modules (PAM),一种通用的验证模块

5. /etc/profile.d 目录下包含了该系统提供的多种shell的默认配置

6. /etc/security目录下包含了安全控制信息,如/etc/security/access.conf控制哪些用户可以以哪种方式登录,/etc/security/limits.conf控制了系统的一些值,如最大进程数.

7. /proc 是 pseudo-filesystem可访问内核的一些参数,避免直接从/dev/kmem读写内核内存

8. /var 系统运行中会变化的数据如log等.

9. cron 特定间隔运行 ,at 指定时间点运行,batch 指定时间点且系统空闲时运行 10. man 数字 关键词 从指定数字的section查关键词 man -k 关键词 查询手册页含关键词的页面 man -K 关键词 在手册页的所有部分查关键词

/etc/man.config包含了手册页的所在路径,也可通过设置MANPATH环境变量来override whatis 命令名 打出相应的命令简要提示

whereis 命令名 打出相应命令的所在位置和其手册页位置 which 命令名 同上,但是只能查$PATH路径下的 11. rpm的用法:

rpm -ql 包名 列出该包所安装的文件。

rpm -qf 全路径文件名 指出哪个包安装了该文件。 rpm -qp 文件名.rpm 列出该rpm包的信息。

rpm -V 包名 校验该包安装到系统上的文件是否已经被改动了。 rpm -K 包名 校验该包文件的完整性。

12. find && xargs

find pathname [-print -exec -ok ...] { } \\; 如:find . -type f -exec ls -l { } \\;

xargs - build and execute command lines from standard input 把获取到的参数分次传递给其他命令

如:find . -type f -print | xargs file 详见引文\"Linux文件查找命令find,xargs详述\"

如需对同一个{}执行多条命令,重复使用-exec COMMAND {} \\;即可

13. Solaris如何更改机器名字和IP地址 /etc/hostname.[网卡名称] 内含主机名

/etc/hosts 网络中主机名的IP地址的对应表

/etc/netmasks 设置网络号及网络掩码

/etc/nsswitch.conf 域名解析的方法及顺序

/etc/resolv.conf DNS Server的地址及域名

/etc/defaultrouter 设置缺省的网关地址

/etc/nodename 主机名

14. Solaris 下设置动态链接库的加载路径:

crle显示原有路径,crle -l 路径名 添加动态链接库路径,务必包括原来的路径,帮助说是-l添加路径,实际上是alternate 路径 15. ls -q 提示不可打印的字符。

16. 特殊组合键:Ctrl+H可能可以充当Backspace;Ctrl+S把当前进程弄进睡眠,Ctrl+Q唤醒睡眠的进程.Ctrl+Z把一个进程调入后台,用bg命令调回前台.CTRL-D 文件结束或者退出shell. Ctrl-J替代Enter

17. kill -l列出信号所对应的数值. killall/pkill 命令名,根据命令名杀死进程 -i可杀前确认.

pkill -u 用户名 进程名:kill 以某用户权限运行的某程序。

skill [signal to send] [options] process selection criteria 发送指定信号给符合选择规则的程序

参数可为终端名,用户名,pid,命令名等。

18. apropos 关键词 whatis 关键词 可以找到相应的manpage,apropos的结果更加繁杂一些。

19. 如果参数中带有- 可在命令选项后跟 -- 代表选项结束. 20. which 命令名 察看实际运行的命令是哪个

21. 环境变量只在当前shell下有效,如果要导出至子进程需要前面加export.如果是shell脚本的形式设置变量值,实际上是要影响父进程的环境变量,应当用source 脚本或者. 脚本 才可以. $TERM 终端类型 $PS1 提示符 $LOGNAME 登录名 $PS1的特殊字符集含义

PS1='\:\\w> ' \rname \\h Hostname

\\H The fully-qualified hostname \\w Current working directory \\d date

\ the current time in 24-hour HH:MM:SS format \\T the current time in 12-hour HH:MM:SS format \\@ the current time in 12-hour am/pm format \\A the current time in 24-hour HH:MM format \\l the basename of the shell's terminal device \\e Escape character \\n newline

\\r carriage return 22. 访问权限设置相关 chmod 的应用对象的代码

u user's permissions g group's permissions o others' permissions

a all permissions (user, group, and other) umask 设置访问权限掩码,即创建文件时会被mask的位 chown 用户名 要改变的文件名 chgrp 用户名 要改变的文件名

chown 用户名:组名 要改变的文件名 同时改变所有者组 --reference=文件名 可以根据已有文件的属性设置 23. 符号链接 ln -s 原始名 链接名

24. double-quotes (\"), single-quotes ('), and back-quotes(``) (also called back-ticks)的区别

\"\"取消括在其内的除$,\\,`,\"的字符的特殊意义

''single-quotes 取消括在其内的所有特殊字符的特殊意义

``back-quotes 执行command substitution,替换其内的命令为命令的执行结果 25. Solaris的服务管理:svc*系列命令 重新启动ssh服务 svcadm restart ssh 列出当前系统服务 svcs

26. Solaris为什么不能在/home下创建目录?

Solaris的用户目录应该创建在/export/home下,不建议直接使用/home。 这 是因为Solaris的/home目录是由automounter控制的,只有automounter可以在这个目录下创建文件。如不用 automounter管理/home目录,可以在删除

/etc/auto_master文件中包含\"/home\"的那行,并运行automount -v让设置生效,当然reboot也可以。

27. Solaris解压缩bz2文件 bzip2 -d 文件名, gz文件 gunzip 文件名,添加软件包pkgadd -d 包名。

28. FreeBSD的toor用户,root的对应用户,如:更改root的默认shell之前可先用toor用户作试验。

29. 流控停止字符问题,特别是VIM常见

由于ctrl+s被很多终端驱动认为是停止发送数据的控制字符,所以如键入ctrl+s可 能会导致终端被hung,此时按ctrl+q可以 重新打开发送。或者用stty命令中止该功能:stty -ixon -xoff或者更换起止字符:stty stop ;stty start ; 30. Solaris 忘记root密码的解决办法:

[S10u1|S11]:新版本的Solaris系统采用grub作为引导程序,因此不需要光盘引导: 1. 首先,在grub的菜单中选择fail safe的选项引导系统 2. 引导后,系统会提问是否mount根分区到/a上,选择是 3. 按照前面的方法编辑/a/etc/shadow文件,保存、重启系统。

[S9|S10]:用solaris的software1/2光盘引导系统,修改口令即可。 * 首先要用光盘引导系统:

[X86]:x86没有OBP,只需要设置BIOS或者通过引导菜单,选择从CDROM上引导系统。 [Sparc]:任何时候通过Stop+a(SUN键盘)或者ctrl+break(PC键盘)进入到OBP提示符下输入:

ok boot cdrom -s

* 然后,mount根分区,打开shadow文件:

mount /dev/dsk/c0t0d0s0 /mnt (这里假设你的硬盘上的/区是/dev/dsk/c0t0d0s0) vi /mnt/etc/shadow

* 最后,编辑shadow文件,把root用户的密码删除,保存文件、重新启动后,就不会有口令了。

31. Solaris中类似rpm -qf的用法 pkgchk -lp 要查找的全路径文件名

grep 要查找的全路径文件名 /var/sadm/install/contents (传统办法,输出比较杂)

32. Samba和Fedora的问题,如出现路径找不到的情况可能是由于SELinux的问题,修改/etc/selinux/config 将selinux设置成disable或permissive(仅仅警告)可临时解决问题。 33. 如何踢掉用户:

(1)who看到从哪个终端上来的,如pts/1

(2)ps -e | grep pts/1 | grep bash 找到登陆的shell进程pid (3)kill -9 pid 杀掉其bash

34. chkconfig修改init.d自动运行:

chkconfig --level 2 crond off 关闭运行级2的crond服务 chkconfig --list 列出服务 chkconfig --del 名字 删除服务

chkconfig --add 名字 加入服务,需事前将符合格式的启动脚本放入/etc/init.d,且脚本头部应有

#chkconfig: 2345 80 05

#description: Oracle 8 Server

类似的两行注释,代表2345运行级别上启动该服务,启动优先级为80,停止优先权为05

35.PSmisc package----一个针对proc文件系统的小型工具包,一般Linux发行版都带有它

 

fuser - identifies what processes are using files,类似lsof

killall - kills a process by its name, similar to a pkill found in some other Unices.

 pstree - Shows currently running processes in a tree format.  pidof - Finds process id of running programs, similar to pgrep found in some other Unices.

36. xinetd服务:/etc/xinetd.d目录下的配置文件是启动具体服务的配置文件,

/etc/xinetd.conf是xinetd自身的配置文件。/etc/rc.d/init.d/xinetd是控制xinetd服务的脚本,

/etc/rc.d/init.d/xinetd restart可以重新启动xinetd服务。

37.Solaris默认不允许root登录SSH:修改/etc/ssh/sshd_config中的PermitRootLogin然后重新启动ssh服务

38.Solaris设备管理: cfgadm

cfgadm -c configure 通道号,激活设备 cfgadm -l ,列出当前的所有设备状况

39.tar的参数 x 解包,v 冗余输出,f 指定文件名,t 仅测试性的查看包内容而不实际释放

40.如何查找某目录下的文件是否包含特定的字符串: grep -rH 待查字符串 目录或文件名

-H 是为了每次match的时候还打印出相应的文件名 -r 是递归查找

41. strace-trace system calls and signals,用法 strace 命令名,可记录下该命令调用的系统调用和信号

42.如何启动rsh,rlogin,rexec服务:

一般linux出于安全考虑默认不会启动这些服务,需要安装rsh-server软件包,会在/etc/xinetd.d或目录下生成相应的文件,如rsh,rlogin,rexec

root的~目录下的.rhosts用来控制允许那些用户登录,通常用\"+ +\"代表允许任意用户

登录(Linux可能需要用\"+对方机器名 用户名\"的形式)。

由于linux下使用pam做验证机制,如使用.rhosts来控制访问还需要修改

/etc/pam.d/rlogin,rexec,rsh等相应的配置文件,必要时将auth sufficient pam_rhosts_auth.so放置在首行。

43.看当前运行的Linux内核的编译选项:zcat /proc/config.gz

44.Linux分区和启动相关:

sfdisk : 查看和修改分区表

sfdisk -l /dev/sda 查看sda的分区表

df:查看文件系统信息

df –T 显示已经挂载的文件系统类型

分区标签:可在/etc/fstab里挂载时使用标签名而不是诸如/dev/sda1的分区名 e2label /dev/sda1 <---> 显示/dev/sda1上的标签 e2label /dev/sda1 / <---> 设置/dev/sda1上的标签为 / findfs LABEL=/ <---> 找到标签为/的分区 blkid <---> 查看分区上的文件系统类型

/etc/fstab 启动时自动挂载指定的分区,文件系统

45. SELinux: Security-Enhanced Linux

一种除文件权限之外的,访问控制系统。可以修改/etc/sysconfig/selinux来决定相应的SELinux级别和保护目标。

打开SELinux时,ext2/3文件系统会给予文件额外的安全属性。

fixfiles [verify|restore] 文件,校验/重置相应文件(递归的目录)的安全属性值

46.时区和时间设置:

通常有两个时钟:1.硬件时钟,也称RTC,一般是在主板上的石英钟。2.系统时钟,由OS的中断计数器保持的时钟。

分系统时间和硬件时间两种,系统时间是Linux系统运行时的时间,硬件时间是同步到CMOS内时钟的时间。

tzselect 用来选择相应的时区,输出结果可用来设置TZ环境变量 /etc/sysconfig/clock ,设置系统自身的时钟信息,内容如下例

ZONE=\"Asia/Shanghai\" UTC=false ARC=false

ZONE=\"Asia/Shanghai\" 系统所在时区,可以用tzselect得到

UTC=false 硬件CMOS时间是否使用UTC存储

ARC=false 是否在Alpha系统上

hwclock --hctosys 将系统时钟同步到硬件时间 hwclock --systohc 将硬件时钟同步到系统时间

可以通过 –-localtime 或 --utc选项来指明硬件时钟是否是UTC的 hwclock显示的总是硬件时钟计算过时差的本地时间,所以:

hwclock --localtime RTC用本地时间保存,因此不需要计算时差,显示真实的硬件时钟

hwclock --utc RTC用UTC时间保存,需要计算时差后,显示本地时间

/etc/adjtime记录了时钟漂移的数值和硬件始终是否是UTC的

设置日期和时间: date

date –s 20070426 设置日期为2007/04/26 date -s '14:00:00' 设置时间为14:00:00

date -s 042614222007.12 设置时间为2007/04/26 14:22:12 模式串为MMDDhhmmCCYY.ss

47. ipcs: 查看当前系统的ipc状态,如共享内存,信号量,消息队列的数量等。

48. 在RH-AS5上安装以Cent-OS为源的yum:

I386

rpm -Uvh

http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-0.0.el5.centos.2.i386.rpm

http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-notes-5.0.0-2.i386.rpm X

rpm -Uvh

http://mirror.centos.org/centos-5/5/os/x86_/CentOS/centos-release-notes-5.0.0-2.x86_.rpm

http://mirror.centos.org/centos-5/5/os/x86_/CentOS/centos-release-5-0.0.el5.centos.2.x86_.rpm

49.在X86的RH-AS5上安装并打开gdm的远程root登录: yum install gdm.i386

打开并编辑/etc/X11/gdm.conf(文件名可能不同如/etc/gdm/custom.conf),修改如下选项:

[security]

AllowRoot=true

AllowRemoteRoot=true [xdmcp]

Enable=true

修改后需重启gdm,killall gdm即可。

50. AIX的X出现\"Couldn't open console\"错误:

(1)用df命令检查文件系统是否满载,特别是/及/var文件系统。

(2)用如下命令,检查IP和机器名设置是否正确 hostname uname -n

cat /etc/hosts

(3)用 smitty mktcpip 命令检查TCP/IP的设置是否正确,如设置了DNS 域名解析,要保证DNS服务器能被访问到。

(4)检查 /etc/dt/config/Xconfig是否存在,配置是否正确,如不确定可以将/usr/dt/config/Xconfig拷贝过去覆盖(cp /usr/dt/config/Xconfig /etc/dt/config/)

(5)重新启动dt:

/usr/dt/bin/dtconfig -kill

ps-ef|grep dt 查看是否有dtlogin进程,如果有,用kill -9 PID 处决 /etc/rc.dt 启动CDE桌面

(6)重新安装 X11.base.rte, X11.Dt.rte 和 X11.Dt.helpinfo

51. 查看Linux的发行版:

可以用lsb_release -i 来查看发行版,但并非所有Linux都安装了该命令。

52. 查看SCSI硬盘的大小:/proc/partitions 或 /sys/block/sdX 里的信息。

53. SUSE9上打开root的XDMCP访问:

(1)打开/etc/X11/xdm/xdm-config:注释以下一行

\"DisplayManager.requestPort: 0” -->; “!DisplayManager.requestPort: 0”

(2) 打开/etc/X11/xdm/Xaccess,去注释以下一行。

\"#* # any host can get a login window”-->; “* # any host can get a login window”

(3)打开/etc/X11/xdm/Xservers:注释以下一行

\":0 local /usr/X11R6/bin/X” -->; \"#:0 local /usr/X11R6/bin/X\" (4)修改/etc/sysconfig/displaymanager,使

DISPLAYMANAGER_ROOT_LOGIN_REMOTE=\"yes\"

DISPLAYMANAGER_REMOTE_ACCESS=\"yes\"

(5)重启xdm

54. 使用Rsync服务(Solaris): rsync是一种用来同步文件的服务。 (1)安装rsync包。

(2)建立/etc/rsyncd.conf,rsync的daemon会使用此配置文件。 配置文件内容示例如下:

uid = root #使用的uid和gid,一般为nobody,但要读取某些无权限的文件设为root

gid = root

use chroot = yes max connections = 3

syslog facility = local5

log file = /var/log/rsync.log #log文件的位置 pid file = /var/run/rsyncd.pid

hosts allow = 10.1.1.244 #允许使用此服务的IP

[rsync244] #模块名,一般一个模块导出一个目录 path=/data #导出的目录 read only=yes list=yes

comment=rsync244 #注释

(3)启动rsync:

/usr/local/bin/rsync --daemon & 通常为了使服务自动启动:

在/etc/init.d下建立启动脚本,并将其链接到相应级别的/etc/rcX.d目

录下

(4)使用rsync命令同步文件:

rsync -trvoglpcE --exclude-from=/exclude_list --delete --delete-excluded --force --progress rsync://10.1.1.244/rsync244 /data2 选项说明

--exclude-from=/

55. telnet服务的异常错误:

服务正常开启,但登录时出现“Name or service not known: Illegal seek”

可尝试在/etc/hosts内加上本机全域名和ip的对应关系。

56. Putty下使用数字小键盘异常:选择 Terminal->Features->钩上 Disable application keypad mode

57. Solaris的Locale设置:

/usr/lib/locale 下可以看到安装了哪些语言包,或使用locale -a localeadm可以修改locale的配置

58. 用Redhat安装光盘启动修复grub:

用rescue模式启动,原/系统会被挂载在/mnt/sysimage目录下。 确认grub配置正确,执行chroot /mnt/sysimage。 执行grub-install重新安装grub

59.查看Linux SCSI模块参数,最大LUN等: /sys/module/scsi_mod/parameters

60.允许root用户在Solaris使用Xmanager登录:

打开/etc/default/login 注释掉CONSOLE=/dev/console,并通过/etc/init.d/dtlogin重启dtlogin

61.打开RHEL的Telnet服务:

(1)检查是否安装了telnet-server包: rpm -qa | grep telnet

(2)修改/etc/xinetd.d/telnet文件的disable=yes为disable=no (3)检查并开启telnet服务:

chkconfig --list | grep telnet (应返回 telnet on)

chkconfig --level 345 telnet on

(4)重启xinetd服务 service xinetd restart (5)打开root登录权限:

可简单注释掉/etc/pam.d/login和/etc/pam.d/remote内的如下一行 auth required pam_securetty.so

62.打开RHEL上的rsh/rexec/rlogin服务: (1)检查是否安装了rsh-server包 rpm -qa | grep rsh

(2)修改/etc/xinetd.d/rsh、rlogin、rexec的disable=yes为disable=no (3)

检查并开启rsh服务:

chkconfig --list | grep rsh (应返回 rsh on) chkconfig --level 345 rsh on (4)重启xinetd服务 service xinetd restart (5)打开root登录权限:

可简单注释掉/etc/pam.d/rlogin、rexec、rsh内的如下一行 auth required pam_securetty.so

或在/etc/securetty加入rexec、rlogin、rsh

63.在Solaris上使用ISO文件:

x.iso

auto create device name /dev/lofi/1 lofiadm -a x.iso mount iso

mount -F hsfs -o ro /dev/lofi/1 /cdrom delete device name

lofiadm -d /dev/lofi/1 x.iso

.如何通过proc看一个文件描述符对应的真实文件: /proc/$PID/fd/ 下即文件描述符对应真实文件的链接.

65.Solaris下查看硬件信息: CPU: psrinfo -v

内存等其它硬件信息:prtdiag v 或 prtconf -v 66.Solaris的jumpstart安装: (0)配置好jumpstart上的参数

(1) 通过管理console,break -y 进入OK{}状态 (2)boot net - install

67. 使系统在程序崩溃时保存core: ulimit -c unlimited

68.在SUSE下打开ftp服务(不安全):

(1).修改/etc/vsftpd.conf:去掉下述三个选项之前的注释anonymous_enable=YES,write_enable=YES,local_enable=YES (2).去掉/etc/ftpusers文件中允许用来登录ftp的帐户名 (3).重启xinetd服务/etc/init.d/xinetd restart

(4).如出现421错误,去掉/etc/vsftpd.conf内listen=yes之前的注释符 69.查看NFS Server的导出: showmount -e 服务器名 70.自动mount nfs: (1) 修改/etc/fstab:

在/etc/fstab新增如下一条记录:

: nfs < options> 0 0 (2)autofs 服务:

autofs 服务会根据/etc/auto.master文件来控制自动挂载命令:automount的命令可以更加方便的指定挂载点,主机名, 输出目录等等。autofs的配置文件以父-子关系来组织,主配置文件(/etc/auto.master) 列出了所有的挂载点,然后他会连接到一个特定的映射类型, 这个类型可以是配置文件,程序, NIS映射或者其他挂载方式,auto.master文件包含了如下内容:

用于指定本地挂载点,指定如何挂载,最通常的NFS挂载做法是使用一个文件,这 个文件通常命名成auto., 是在auto.master指定的挂载点,一个NFS类型的auto.的 内容如下:

- : 使用本地挂载点替换

可以使用nfs的选项替换 ,多个选项之间使用“,”分开,如果需要更多的信息查看man fstab. 确定在options列表前使用了符号\"-\"。 使用你的NFS服务器替换如上的

使用NFS服务器的输出路径替换如上的 . 使用nfs的选项替换

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务