1. 简述GNU以及gpl的含义。
GNU是1983年有Richard Stallman提出的一项自由软件运动,要求我们自由使用、自由更改、自由发布软件;GPL是定义如何自由的协议。
2. 列出你熟知的Linux发行版。
Linux发行版:Redhat、CentOS、Ubuntu、Debian、Feroda、SuSE等
3. 你知道Unix和Linux之间的关系吗?
Linux是类Unix系统,可以说是由Unix衍生而来
4. 如何查看你的Linux是64位还是32位?
uname -r,得到结果如有i386或i586或i686,则为32位Linux操作系统;如结果中有x86_64,则为64位操作系统
5. 怎么看你的服务器的cpu信息与内存信息?
查看cpu信息:cat /porc/cpuinfo
查看内存信息:cat /proc/meninfo
6. 列出几种你知道的win上ssh远程登录到Linux的客户端软件。
PuTTY、Xshell、SecureCRT
7. 我们远程登录Linux时,除了使用密码登录外还可以哪种方式登录呢?需要把什么保存到你的电脑上,而把什么放到服务器上的哪个文件中?
还使用密钥登录;需要把私钥文件保存在电脑上,把公钥内容完整粘贴到服务器上的~/.ssh/authorized_keys文件中
8. 设置grub密码的作用是什么?
增加系统安全,需要输入grub密码才能进入单用户模式
9. 简述Linux系统启动步骤。
BIOS加电自检,找到MBR,通过MBR找到bootloader(grub)引导程序找kernel内核所在位置,找到kernel后,执行内核影像代码,检测和加载硬件驱动,然后通过从/etc/inittab配置文件中找到给定运行级别进行系统初始化,初始化过程:执行/etc/rc.d/rc.sysinit,加载swap分区、加载硬件模块和执行一些先要运行的服务;执行/etc/rc.d/rc,通过$RUNLEVEL,启动/etc/rc.d/rcX.d目录下的服务,最后执行/etc/rc.d/rc.local;初始化完毕后,运行mingetty进程,启动终端,最后用户登录,即完成系统启动。
10. 请列出你常用的快捷键以及他们的作用。
Crtl + u:命令行下,清除光标之前的字符
Crtl + k:命令行下,清除光标以后的字符
Crtl + l:清屏
Crtl + c:停止正在运行的操作
Crtl + z:暂停正在运行的操作;恢复运行,常与jobs、!、history命令连在一起使用
Crtl + s:锁定终端,锁定后,任何输入不显示、无效
Ctrl + q:解锁终端,解锁后,恢复输入,如锁定状态下有输入字符,则会显示字符
11. 假如你的Linux root密码忘记,你如何做呢?
重启系统,系统启动时,5s内按enter键,下方向键选择kernel开头的行(如有设置grub密码,先按p,输入grub密码),按e键编辑kernel,在最后添加1或s或single,再按回车键,然后按b键进入单用户模式,输入passwd修改root密码,然后reboot重启即可。
12. 你不小心把/etc/passwd文件给更改错误,导致系统不能正常启动,这时候你如何做?
光驱加载系统光盘,启动系统,F2键进入BIOS,修改boot启动选项,优先光驱启动,保存BIOS配置退出,启动系统,选择救援模式,选择不使用网络,提示光盘挂载成功后进入光盘系统,输入命令:chroot /mnt/sysimage/进入Linux系统,查看修改配置文件至正确后保存退出,输入exit命令退出至光盘系统,最后reboot重启,重启后进入BIOS修改回优先硬盘启动
13. 看下你的磁盘是怎么分区的,每个分区的文件系统类型是什么?
查看磁盘分区:fdisk -l
查看分区文件系统类型:mount
14. 看下你的磁盘大小使用情况,看下你的文件系统inode使用情况?
磁盘大小使用情况:df -h
查看文件系统inode使用情况:df -i
15. 使用fdisk分区的时候,你最多可以分几个主分区?逻辑分区和扩展分区又什么关系?假设我的磁盘分区是这样的:/dev/sda1,/dev/sda2,/dev/sda3,/dev/sda5,/dev/sda6,/dev/sda7 那么推算一下主分区和逻辑分区的个数。
最多可以分4个主分区
逻辑分区建立在扩展分区之上,得先分出扩展分区,才能分逻辑分区2个主分区,3个逻辑分区
16. 如何查看你的linux是哪个发行版?如何查看你的Linux的内核版本?
查看发行版:cat /etc/issue
查看内核版本:uname -r
17. 使用哪个命令,可以查看当前登陆Linux系统的用户都有哪些并且显示登陆的终端?
w
18. 如何查看当前用户的uid?
id
19. 如何统计/var/log 这个目录的大小?
du -sh /var/log
20. 创建一个目录 /tmp/aming/user1/123,请考虑若/tmp/aming 目录不存在的情况。
mkdir -p /tmp/aming/user1/123
21. 用cp拷贝目录时,需要加哪个选项?
-r选项
22. 使用什么命令可以统计一个文档的行数?
wc -l filename
23. 如何按照时间顺序列出某个目录下的文件和目录?
ls -lt
24. 当删除一个目录或文件时,加什么选项可以不询问我们就直接删除掉?
-f选项
25. 使用ls -l 列出当前目录下的文件和目录,每行的第一个字符表示该文件的类型,如果这个字符是-表示什么含义,d,s,l,c,b分别表示什么呢?
-:普通文件
d:目录
s:套接字文件
l:软链接文件
c:字符设备文件
b:块设备文件
26. 软连接如何做,硬连接如何做?如何区分软、硬连接?
创建软链接:ln -s 原文件 软链接文件名
创建硬链接:ln -s 原文件 硬链接文件名
区分软、硬链接:ls -li,软链接文件标识字符为l,硬链接行首字符为-;软链接文件名会指向原文件,硬链接不会指向原文件;硬链接与原文件inode相同,软链接与原文件inode不同
27. 如何统计一个文件的大小?
du -sh filename
28. 我的Linux服务器磁盘空间不够了,所以添加了一块新硬盘,那么我需要做哪些步骤才可以在新磁盘上写数据?每个步骤分别使用什么命令操作?
假设新添加的硬盘为sdb
1)分区:fdisk /dev/sdb进行分区,n新建分区, 按照需求选择p主分区或者e扩展分区,键入分区大小,p列出当前已分分区,w保存分区操作退出
2)格式化:对前面创建的分区进行格式化,如分区/dev/sdb/sdb1需要格式化成ext4格式,使用命令:mke2fs -t ext4 /dev/sdb1
3)挂载:有两种方式:临时挂载:mount /dev/sdb1 挂载点
永久有效:vim /etc/fstab
添加:/dev/sdb1 挂载点 ext4 defaults 0 0
保存退出
用以下命令挂载:mount -a
29. 使用ls -l命令查看时,第二列数字表示什么含义,我们如何计算能得到这个数字?
对于文件:有多少个文件与自己使用相同的inode( 计算:原文件 + 原文件的硬链接个数 )
对于目录:目录下有多少个子目录( 计算:ls能看到的蓝色文件名的目录个数 + 2[2代表.与..] )
30. 我们可以使用什么命令查看某个文本文档的内容?若这个文件非常大,如何只查看这个文件的最开头50行,如何查看这个文件的最后100行?
查看文本文档内容:cat、more、less、tail、head
查看开头50行:head -50 filename
查看最后100行:tail -100 filename
31. 某个日志文件/var/log/1.log的内容在不断变化中,那么如何动态显示一个文件的内容?
tail -f /var/log/1.log
32. 使用vim工具,完成如下操作:请把/etc/init.d/iptables 复制到/root/目录下,并重命名为test.txt;用vim打开test.txt并设置行号;分别向下、向右、向左、向右移动6个字符;分别向下、向上翻一页;把光标移动到第60行;让光标移动到行末,再移动到行首;移动到test.txt文件的最后一行;移动到文件的首行;搜索文件中出现的 iptables,数一下一共出现多少个;把从第一行到第三行出现的iptables 替换成iptable;还原上一步操作;把整个文件中所有的iptables替换成iptable;把光标移动到25行,删除字符 “$”,删除第50行;删除从37行到42行的所有内容;复制48行并粘贴到52行下面;复制从37行到42行的内容并粘贴到44行上面;把37行到42行的内容移动到19行下面;光标移动到首行,把/bin/sh 改成 /bin/bash;在第一行下面插入新的一行,并输入”# Hello!”;保存文档并退出。复制到/root/目录下,并重命名为test.txt:当前用户为root,执行:cd;cp
/etc/init.d/iptables test.txt
vim test.txt
向下、向上、向左、向右移动6个字符:6j、6k、6h、6l
向下、向上翻一页:Crtl + f、Crtl + b
把光标移动到第60行:60G
让光标移动到行末,再移动到行首:Shift + 4、Shift + 6
移动到test.txt文件的最后一行:G
移动到文件的首行:gg
搜索文件中出现的 iptables,数一下一共出现多少个:命令行模式,输入/iptables、按n键往下直到左下角提示已到文本最后,共11个把从第一行到第三行出现的iptables 替换成iptable:命令行模式,输
入:1,3$/iptables/iptable/g还原上一步操作:u把整个文件中所有的iptables替换成iptable:命令行模式,输入:1,
$s/iptables/iptable/g
把光标移动到25行,删除字符 “$”,删除第50行:25G,hl左右把光标移动到字符$上,按x删除;删除第50行:50G,dd
删除从37行到42行的所有内容:命令行模式,输入:37,42d
复制48行并粘贴到52行下面;复制从37行到42行的内容并粘贴到44行上面:一般模式,48G,yy,52G,p;一般模式,37G,6yy,44G,P
把37行到42行的内容移动到19行下面:一般模式,37G,6dd,19G,p
光标移动到首行,把/bin/sh 改成 /bin/bash:gg,l光标向右移动至字符/上,a切换编辑模式,输入ba,按esc
在第一行下面插入新的一行,并输入”# Hello!”:gg,o,输入# Hello!
保存文档并退出:按esc,再输入:x或:wq或ZZ
33. 新建一个用户aming,并使的主组为group1,附属组为group2,然后给该用户设置一个非常复杂的密码。
groupadd group1 group2
useradd -g group1 -G group2 aming
passwd aming
两次输入9位以上带有大小写字母、数字、特殊符号(也可以用mkpasswd生成,该工具需安装expect软件包)
34. 先新建一个用户user3,然后更改shell为/sbin/nologin, 再删除user3用户,并连同该用户的家目录一并删除。
useradd user3
usermod -s /sbin/nologin
userdel -r user3
35. 有时候,我们想临时切换到其他用户下,要什么什么命令呢?
su - username
36. 如果我想让任何用户都可以更改1.txt,那么我们如何给1.txt设置权限?
chmod 666 1.txt或chmod +w 1.txt
37. 我想把某个目录下的所有文件和目录(包含二级、三级)设置所属主为user1,所属组为users怎么做?
chown -R user1:users 目录名
38. Linux系统默认目录权限是多少,文件权限是多少,这个默认权限是由什么决定的?若更改它的值,你会推算出目录或文件的默认权限吗?
目录默认权限:755
文件默认权限:644
由umask决定
更改umask值:
假设umask该为001:umask 001
推算:umask先由数字换算成rwx形式:--------x
目录默认权限 = rwxrwxrwx - (--------x) = rwxrwxrw-,换算成数字形式为776
文件默认权限 = rw-rw-rw- - (--------x) = rwxrwxrw-,换算成数字形式为666
39. 你知道suid的作用是什么吗,请举一个Linux系统中实际应用的例子?
suid针对可执行的二进制文件设置,作用:让普通用户对该可执行二进制文件作用的文件拥有文件所属主的权限实际应用:可执行二进制文件/usr/bin/passwd就是设置了suid,使得普通用户能够对/etc/passwd文件以文件所属主root的权限去操作
40. 请新建一个目录123,并设置权限实现这样的需求:任何用户(除root外)都可以在该目录下新建、更改、删除自己创建的文件或目录,但是不能更改其他用户的。
mkdir 123
chmod 1777 123/
41. 如何设置权限,让一个文件只能增加,不能删除?又如何设置权限让这个文件不能被删除、重命名、设定链接、写入、新增数据?
让一个文件只能增加,不能删除:chattr +a filename
让这个文件不能被删除、重命名、设定链接、写入、新增数据:chattr -i filename;chattr +i filename
42. 你知道如何查找一个命令的绝对路径吗?那么这个路径是通过哪个变量获得的?如何更改这个变量的值,并且让它永久生效?
查看命令绝对路径:which command
通过变量:$PATH
改变变量的值:
vim ~/.bash_profile
修改PATH=$PATH:$HOME/bin这行
生效:source ~/.bash_profile
43. 请区分atime,mtime,ctime三个时间,使用哪个命令可以获取到一个文件或目录的这三个time?
atime:最近访问时间
mtime:文件内容最后一次被修改的时间
ctime:文件属性最后一次被修改的时间
获取到一个文件或目录的这三个time的命令:stat filename
44. 假如你每天都会运行某个命令+选项,并且这个命令和选项加起来足足有50个字符那么长,那么你能不能提供一个简单快捷的方案,只敲几个字符就可以运行这个命令?
使用别名alias,在配置文件~/.bashrc中添加alias,并用source ~/.bashrc生效
45. 查找某个目录下所有100天以前的文件(并不是目录),并且拷贝到/tmp/下。
find . -type f -mtime +100|xargs -i cp {} /tmp/
46. 查找某个目录下所有一年前的目录和文件或者大小大于1G的文件,并且删除。
find . -mtime +365 -o -type f -size +1G|xargs rm -rf
47. 使用dd命令,生成两个文件大小分别为100M、50M的测试文件,然后分别使用gzip,bzip2,tar进行压缩、解压缩处理。
dd if=/dev/zero of=./100M bs=1M count=100
dd if=/dev/zero of=./50M bs=1M count=50
gzip、tar压缩解压:
tar zcvf 100M.tar.gz 100M
tar zcvf 50M.tar.gz 50M
tar zxvf 100M.tar.gz 100M
tar zxvf 50M.tar.gz 50M
bzip2、tar压缩解压:
tar jcvf 100M.tar.gz 100M
tar jcvf 50M.tar.gz 50M
tar jxvf 100M.tar.gz 100M
tar jxvf 50M.tar.gz 50M
48. 如何查看网卡的ip, 如何查看当前网卡是否连接?
查看网卡ip:ifconfig
查看是否连接:假设查看网卡eth0:mii-tool eth0或ethtool eth0
49. 给eth0设置ip如下:IP地址为192.168.123.123,子网掩码为255.255.255.0,网关为192.168.123.1,dns1为192.168.123.1,dns2为8.8.8.8
vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.123.123
NETMASK=255.255.255.0
GATEWAY=192.168.123.1
DNS1=192.168.123.1
DNS2=8.8.8.8
重启网络服务生效:
service network restart
50. 我们可以通过什么的方法让更改后的网卡配置文件生效呢?至少写两个。
方法一:重启网络服务,service network restart
方法二:重启网络接口,如更改的网卡为eth0,使用ifdown eth0;ifup eth0
51. 查看系统已经安装的rpm包命令是什么?
rpm -qa
52. 如何查某个命令是由哪个rpm包安装的?
rpm -qf `which command`
53. 如何使用rpm工具安装、卸载、升级一个rpm包?
安装:rpm -ivh rpm包完整名
卸载:rpm -e rpm包名
升级:rpm -Uvh rpm包名
54. 如何使用yum查找、安装或卸载某个rpm包?
查找:yum list|grep rpm包名 或者 yum search rpm包名
安装:yum install rpm包名
卸载:yum remove rpm包名
55. 如何把你进程调入后台,又如何把后台的进程调回前台?
进程跳入后台:command &
调回前台运行:jobs查看后台运行的jobs id,fg jobsid
56. 一个分区我们给它分了10G,可实际上真正使用的空间才9G左右,这是为什么呢?
格式化时,系统默认预留5%的空间给超级用户root,以及文件系统本身需要占用空间
57. 如何打开一个文档,并进入时让光标定位到第35行?
vim -35 filename
58. 如何解压.tar.xz的压缩包?
tar Jxvf 压缩包名
59. yum如何下载一个rpm包?
先安装软件包:yum install -y yum-plugin-downloadonly
下载rpm包到当前目录:yum install --downloadonly --downloaddir=./ rpm包名
60. 源码包下载应该去哪里下载?我们安装源码包时,当你解压后,你首先要做的事情是什么,然后我们再去安装?
管网下载;首先要查看INSTALL或README说明文件