Java全栈面试题汇总目录-CSDN博客
1. 什么是Linux?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2. Unix和Linux有什么区别?
开源性
Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
跨平台性
Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。
可视化界面
Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。
硬件环境
Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。
用户群体
Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。
相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!
3. 什么是Linux内核?
Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
- 系统内存管理
- 应用程序管理
- 硬件设备管理
- 文件系统管理
4. Linux的基本组件是什么?
内核,shell和GUI,系统实用程序和应用程序。
5. Linux的体系结构?
- 用户空间(User Space):用户空间又包括用户的应用程序(User Applications)、C库(C Library)
- 内核空间(Kernel Space):内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code)
6. 为什么Linux体系结构要分为用户空间和内核空间?
- 现代CPU实现了不同的工作模式,不同模式下CPU可以执行的指令和访问的寄存器不同
- Linux从CPU的角度出发,为了保护内核的安全,把系统分成了两部分
用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:
- 系统调用;
- 硬件中断。
7. BASH和DOS之间的基本区别是什么?
- BASH命令区分大小写,而DOS命令则不区分
- 在BASH下,/character是目录分隔符,\作为转义字符。在DOS下,/用作命令参数分隔符,\是目录分隔符
- DOS遵循命名文件中的约定,即8个字符的文件名后跟一个点,扩展名为3个字符。BASH没有遵循这样的惯例
8. Linux开机启动过程?
- 主机加电自检,加载BIOS硬件信息
- 读取MBR的引导文件(GRUB、LILO)
- 引导Linux内核
- 运行第一个进程init(进程号永远为1)
- 进入相应的运行级别
- 运行终端,输入用户名和密码
9. Linux系统缺省的运行级别?
- 关机
- 单机用户模式
- 字符界面的多用户模式(不支持网络)
- 字符界面的多用户模式
- 未分配使用
- 图形界面的多用户模式
- 重启
10. Linux使用的进程间通信方式?
- 管道(pipe)、流管道(s_pipe)、有名管道(FIFO)
- 信号(signal)
- 消息队列
- 共享内存
- 信号量
- 套接字(socket)
11. Linux有哪些系统日志文件?
比较重要的是/var/log/messages日志文件。
该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。
另外,如果系统里有ELK日志集中收集,它也会被收集进去。
12. 什么是交换空间?
交换空间是Linux使用的一定空间,用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况。但现在的电脑内存越来越大,设置交换空间意义不大了
13. 什么是root账户?
root账户就像一个系统管理员账户,允许你完全控制系统。你可以在此处创建和维护用户账户,为每个账户分配不同的权限。每次安装Linux时都是默认账户。
14. 什么是LILO?
LILO是Linux的引导加载程序。它主要用于将Linux操作系统加载到主内存中,以便它可以开始运行。
15. 什么是BASH?
BASH是Bourne Again Shell的缩写。它由Steve Bourne编写,作为原始Bourne Shell(由/bin /sh表示)的替代品。它结合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。从那以后,它已被改编为运行Linux的大多数系统的默认shell。
16. 什么是CLI?
命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。
通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。
17. 什么是GUI?
图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。
18. 简单Linux文件系统?
在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。
也就是说在Linux系统中有一个重要的概念:一切都是文件。其实这是Unix哲学的一个体现,而Linux是重写Unix而来,所以这个概念也就传承了下来。在Unix系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
Linux支持5种文件类型,如下图所示:
|------------|-------------------------------------|--------------------------------------------|
| 文件类型 | 描述 | 示例 |
| 普通文件 | 用来在辅助存储设备(如磁盘)上存储信息和数据 | 包含程序源代码(用C、C++、Java等语言所编写)、可执行程序、图片、声音、图像等 |
| 目录文件 | 用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名 | /root、/home |
| 链接文件 | 用于不同目录下文件的共享 | 当创建一个已存在文件的符号链接时,系统就创建一个链接文件这个链接文件指向已存在的文件 |
| 设备文件 | 用来访问硬件设备 | 包括键盘、硬盘、光驱、打印机等 |
| 命名管道(FIFO) | 是一种特殊类型的文件,Linux系统下,进程之间通信可以通过该文件完成 | |
19. Linux的目录结构是怎样的?
常见目录说明:
/bin:存放二进制可执行文件(ls, cat, mkdir等),常用命令一般都在这里;
/etc:存放系统管理和配置文件;
/home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
/usr:用于存放系统应用程序;
/opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
/proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
/root:超级用户(系统管理员)的主目录(特权阶级o);
/sbin:存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
/dev:用于存放设备文件;
/mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
/boot:存放用于系统引导时使用的各种文件;
/lib:存放着和系统运行相关的库文件;
/tmp:用于存放各种临时文件,是公用的临时文件存储点;
/var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等)等;
/lost + found:这个目录平时是空的,系统非正常关机而留下"无家可归"的文件就在这里。
20. 什么是inode?
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
21. 简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程?
Linux通过inode节点表将文件的逻辑结构和物理结构进行转换。
inode节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在inode节点表中最重要的内容是磁盘地址表。在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。
Linux文件系统通过把inode节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的inode节点号,通过该inode节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
22. 什么是硬链接和软链接?
硬链接
由于Linux下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个一个硬链接,文件的链接数就加1。
不足:1.不可以在不同文件系统的文件间建立链接;2.只有超级用户才可以为目录创建硬链接。
软链接
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。类似于Windows中的快捷方式
实际场景下,基本是使用软链接。总结区别如下:
硬链接不可以跨分区,软件链可以跨分区。
硬链接指向一个inode节点,而软链接则是创建一个新的inode节点。
删除软链接文件,不会删除原文件,删除软链接原文件,会把原文件删除。
23. RAID是什么?
RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当作一个硬盘。
RAID分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的RAID方案。
24. 一台Linux系统初始化环境后需要做一些什么安全工作?
- 添加普通用户登陆,禁止root用户登陆,更改SSH端口号
- 修改SSH端口不一定绝对。当然,如果要暴露在外网,建议改下
- 服务器使用密钥登陆,禁止密码登陆
- 开启防火墙,关闭SElinux,根据业务需求设置相应的防火墙规则
- 装fail2ban这种防止SSH暴力破击的软件
- 设置只允许公司办公网出口IP能登陆服务器(看公司实际需要)
- 也可以安装VPN等软件,只允许连接VPN到服务器上
- 修改历史命令记录的条数为10条
- 只允许有需要的服务器可以访问外网,其它全部禁止
- 做好软件层面的防护
- 设置nginx_waf模块防止SQL注入
- 把Web服务使用www用户启动,更改网站目录的所有者和所属组为www
25. Linux性能调优都有哪几种方法?
- Disabling daemons(关闭daemons)
- Shutting down the GUI(关闭 GUI)
- Changing kernel parameters(改变内核参数)
- Kernel parameters(内核参数)
- Tuning the processor subsystem(处理器子系统调优)
- Tuning the memory subsystem(内存子系统调优)
- Tuning the file system(文件系统子系统调优)
- Tuning the network subsystem(网络子系统调优)
26. 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?
bash
cat /proc/cpuinfo | grep -c 'physical id'
cat /proc/cpuinfo | grep -c 'processor'
27. 如何查看当前系统都有哪些进程?
bash
ps -aux 或者 ps -elf
28. 如何查看系统都开启了哪些端口?
bash
netstat -lnp
29. 如何查看网络连接状况?
bash
netstat -an
30. 想修改ip,需要编辑哪个配置文件,修改完配置文件后,如何重启网卡,使配置生效
使用vi或者vim编辑器编辑网卡配置文件/etc/sysconfig/network-scripts/ifcft-eth0
bash
DEVICE=eth0
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.147.130
NETMASK=255.255.255.0
GATEWAY=192.168.147.2
DNS1=192.168.147.2
DNS2=8.8.8.8
重启网络服务
bash
service network restart
31. 能否给一个网卡配置多个IP?如果能,怎么配置?
bash
cat /etc/sysconfig/network-scripts/ifcfg-eth0 #查看eth0的配置
新建一个ifcfg-eth0:1文件
bash
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
修改ip,重启网络服务
32. 如何查看某个网卡是否连接着交换机?
mii-tool eth0或者mii-tool eth1
33. 如何查看当前主机的主机名,如何修改主机名?要想重启后依旧生效,需要修改哪个配置文件?
查看主机名hostname
修改主机名hostname + 主机名
永久生效需要修改配置文件
bash
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6.5-1
34. 设置DNS需要修改哪个配置文件?
- 在文件/etc/resolv.conf中设置DNS
- 在文件/etc/sysconfig/network-scripts/ifcfg-eth0中设置DNS
35. 如何备份某个用户的任务计划?
将/var/spool/cron/目录下指定用户的任务计划拷贝到备份目录cron_bak/下即可
bash
cp /var/spool/cron/rachy /tmp/bak/cron_bak/
36. 如何可以把系统中不用的服务关掉?
bash
chkconfig servicename off
37. 如何让某个服务(假如服务名为nginx)只在3,5两个运行级别开启,其他级别关闭
先关闭所有运行级别:
bash
chkconfig nginx off
然后打开35运行级别:
bash
chkconfig --level 35 nginx on
38. 某个账号登陆Linux后,系统会在哪些日志文件中记录相关信息?
用户身份验证过程记录在/var/log/secure中,登录成功的信息记录在/var/log/wtmp。
39. 想在Linux命令行下访问某个网站,并且该网站域名还没有解析,如何做?
在/etc/hosts文件中增加一条从该网站域名到其IP的解析记录即可,或者使用curl -x。
40. 自定义解析域名的时候,我们可以编辑哪个文件?是否可以一个IP对应多个域名?是否一个域名对应多个IP?
编辑/etc/hosts,可以一个ip对应多个域名,不可以一个域名对多个ip。
41. 在Linux下如何指定DNS服务器,来解析某个域名?
使用dig命令
bash
dig @8.8.8.8 www.baidu.com #使用谷歌DNS解析百度
命令
1. cat命令
cat命令用于连接文件并打印到标准输出设备上。
cat主要有三大功能:
- 一次显示整个文件:
cat filename
- 创建一个文件:
cat > filename
只能创建新文件,不能编辑已有文件。
- 将几个文件合并为一个文件:
cat file1 file2 > file
-b 对非空输出行号
-n 输出所有行号
2. chmod命令
Linux/Unix的文件调用权限分为三级:文件拥有者、群组、其他。利用chmod可以控制文件如何被他人所调用。
用于改变Linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l test.txt查找。
常用参数:
-c:当发生改变时,报告处理信息
-R:处理指定目录以及其子目录下所有文件
权限范围:
u:目录或者文件的当前的用户
g:目录或者文件的当前的群组
o:除了目录或者文件的当前用户或群组之外的用户或者群组
a:所有的用户及群组
权限代号:
r:读权限,用数字4表示
w:写权限,用数字2表示
x:执行权限,用数字1表示
-:删除权限,用数字0表示
s:特殊权限
3. chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
-c:显示更改的部分的信息
-R:处理指定目录及子目录
4. cp命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在shell脚本中,如果不加-i参数,则不会提示,而是直接覆盖!
-i:提示
-r:复制目录及目录内所有项目
-a:复制的文件与原文件时间一样
-s:复制一个软链接
5. find命令
用于在文件树中查找文件,并做出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:
pathname: find命令所查找的目录路径。用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b:块设备文件
d:目录
c:字符设备文件
l:符号链接文件
p:管道文件
f:普通文件
6. head命令
head用来显示文件的开头至标准输出中,默认head命令打印其相应文件的开头10行。
常用参数:
-n<行数>:显示的行数(行数为负数表示从最后向前数)
7. more命令
功能类似于cat,more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示。
命令参数:
+n 从第n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示"Press space to continue,'q' to quit(按空格键继续,按q键退出)",禁用响铃功能
-l 忽略Ctrl + l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl + F 向下滚动一屏
空格键 向下滚动一屏
Ctrl + B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
8. less命令
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
常用命令参数:
-i 忽略搜索时的大小写
-N 显示每行的行号
-o<文件名> 将less输出的内容在指定文件中保存起来
-s 显示连续空行为一行
/字符串 向下搜索"字符串"的功能
?字符串 向上搜索"字符串"的功能
n 重复前一个搜索(与/或?有关)
N 反向重复前一个搜索(与/或?有关)
-x<数字> 将"tab"键显示为规定的数字空格
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
9. ln命令
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过ln创建的链接(link)减少磁盘占用量。
链接分类:软件链接及硬链接
软链接:
-
软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
-
软链接可以跨文件系统,硬链接不可以
-
软链接可以对一个不存在的文件名进行链接
-
软链接可以对目录进行链接
硬链接:
-
硬链接,以文件副本的形式存在。但不占用实际空间。
-
不允许给目录创建硬链接
-
硬链接只有在同一个文件系统中才能创建
需要注意:
第一:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二:ln的链接又分软链接和硬链接两种,软链接就是ln --s源文件目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln源文件目标文件,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
第三:ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
常用参数:
-b:删除,覆盖以前建立的链接
-s:软链接(符号链接)
-v:显示详细处理过程
10. locate命令
locate通过搜寻系统内建文档数据库达到快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性调用的。默认情况下locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值(etc/crontab)。
locate与find命令相似,可以使用如*、?等进行正则匹配查找
常用参数:
-l num(要显示的行数)
-f:将特定的档案系统排除在外,如将proc排除在外
-r:使用正则运算式做为寻找条件
11. mv命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
12. rm命令
删除一个目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录。如果使用rm来删除文件,通常仍可以将该文件恢复原状。
13. mount命令
如果要挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
mkdir /u01
mount /dev/sdb1 /u01
14. tail命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用参数:
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
15. touch命令
Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
ls -l可以显示档案的时间记录。
语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录...]
参数说明:
a:改变档案的读取时间记录。
m:改变档案的修改时间记录。
c:假如目的档案不存在,不会建立新的档案。与--no-create的效果一样。
f:不使用,是为了与其他Unix系统的相容性而保留。
r:使用参考档的时间记录,与--file的效果一样。
d:设定时间与日期,可以使用各种不同的格式。
t:设定档案的时间记录,格式与date指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本信息。
16. vim命令
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
17. diff命令
比较字符串,比较的时候忽略空白符
18. sort命令
以升序对文件内容排序:sort names.txt。
以降序对文件内容排序:sort -r names.txt。
以第三个字段对/etc/passwd的内容排序:sort -t: -k 3n /etc/passwd | more。
19. export命令
输出跟字符串oracle匹配的环境变量:export | grep ORCALE。
设置全局环境变量:export ORACLE_HOME=/u01/app/oracle/product/10.2.0。
20. passwd命令
passwd用于在命令行修改密码,使用这个命令会要求你先输入旧密码,然后输入新密码:passwd。
超级用户可以用这个命令修改其他用户的密码,这个时候不需要输入用户的密码:passwd USERNAME。
passwd还可以删除某个用户的密码,这个命令只有root用户才能操作,删除密码后,这个用户不需要输入密码就可以登录到系统:passwd -d USERNAME。
21. su命令
su命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码:su - USERNAME。
22. shutdown命令
关闭系统并立即关机:shutdown -h now。
10分钟后关机:shutdown -h +10。
重启:shutdown -r now。
重启期间强制进行系统检查:shutdown -Fr now。
23. crontab命令
查看某个用户的crontab配置:crontab -u user -l。
设置一个每十分钟执行一次的计划任务:* /10 * * * * /home/ramesh/check-disk-space。【前提是,在crontab下】
24. service命令
service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径。
查看服务状态:service ssh status。
查看所有服务状态:service --status-all。
重启服务:service ssh restart。
使用chkconfig命令,可以设置服务在系统启动时,是否自动启动。
25. uname命令
uname可以显示一些重要的系统信息,如内核名称、主机名、内核版本号、处理器类型之类的信息:uname -a
26. man命令
显示某个命令的man页面:man crontab
27. whereis命令
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis及locate都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
28. which命令
在Linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
which是在PATH就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
常用参数:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
29. grep命令
强大的文本搜索命令,grep(Global Regular Expression Print)全局正则表达式搜索。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file | dir
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context显示匹配字符前后n行
-c --count计算符合样式的列数
-I 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
30. wc命令
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
命令格式:
wc [option] file..
命令参数:
-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
31. cd命令
cd(change directory)命令语法:
cd [目录名]
说明:切换当前目录至 dirName。
32. df命令
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以1KB为单位进行显示,除非环境变量POSIXLY_CORRECT被指定,那样将以512字节为单位进行显示:
-a:全部文件系统列表
-h:以方便阅读的方式显示信息
-i:显示inode信息
-k:区块为1024字节
-l:只显示本地磁盘
-T:列出文件系统类型
33. du命令
du命令也是查看使用空间的,但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看:
命令格式:
du [选项] [文件]
常用参数:
-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c或---total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
34. ls命令
就是list的缩写,通过ls命令不仅可以查看Linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
常用参数搭配:
ls --a 列出目录所有文件,包含以.开始的隐藏文件
ls --A 列出除.及..的其它文件
ls --r 反序排列
ls --t 以文件修改时间排序
ls --S 以文件大小排序
ls --h 以易读大小显示
ls --l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
35. mkdir命令
mkdir命令用于创建文件夹。
可用选项:
-m 对新建目录设置存取权限,也可以用chmod命令设置;
-p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
36. pwd命令
pwd命令用于查看当前工作目录路径。
37. rmdir命令
从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
注意:不能删除非空目录
38. ifconfig命令
ifconfig用于查看和配置Linux系统的网络接口。
查看所有网络接口及其状态:ifconfig -a。
使用up和down命令启动或停止某个接口:ifconfig eth0 up和ifconfig eth0 down。
39. iptables命令
iptables,是一个配置Linux内核防火墙的命令行工具。功能非常强大,对于我们开发来说,主要掌握如何开放端口即可。例如:
把来源IP为192.168.1.101访问本机80端口的包直接拒绝:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT。
开启80端口,因为web对外都是这个端口
iptables -A INPUT -p tcp --dport 80 -j ACCEP
另外,要注意使用iptables save命令,进行保存。否则,服务器重启后,配置的规则将丢失。
40. netstat命令
Linux netstat命令用于显示网络状态。
利用netstat指令可让你得知整个Linux系统的网络情况。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数说明:
-a或-all 显示所有连线中的Socket
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址
-c或--continuous 持续列出网络状态
-C或--cache 显示路由器配置的快取信息
-e或--extend 显示网络其他相关信息
-F或-fib 显示FIB
-g或--groups 显示多重广播功能群组组员名单
-h或--help 在线帮助
-i或--interfaces 显示网络界面信息表单
-l或--listening 显示监控中的服务器的Socket
-M或--masquerade 显示伪装的网络连线
-n或--numeric 直接使用IP地址,而不通过域名服务器
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称
-o或--timers 显示计时器
-p或--programs 显示正在使用Socket的程序识别码和程序名称
-r或--route 显示Routing Table
-s或--statistice 显示网络工作信息统计表
-t或--tcp 显示TCP传输协议的连线状况
-u或--udp 显示UDP传输协议的连线状况
-v或--verbose 显示指令执行过程
-V或--version 显示版本信息
-w或--raw 显示RAW传输协议的连线状况
-x或--unix 此参数的效果和指定"-A unix"参数相同
--ip或--inet 此参数的效果和指定"-A inet"参数相同
41. ping命令
Linux ping命令用于检测主机。
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
42. telnet命令
Linux telnet命令用于远端登入。
执行telnet指令开启终端机阶段作业,并登入远端主机。
43. curl命令
如果我们使用ping测试某个地址是否能连接,那么curl测试用个URL是否可以访问。
44. wget命令
使用wget从网上下载软件、音乐、视频:
bash
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
下载文件并以指定的文件名保存文件:
bash
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
45. ftp命令
连接ftp服务器并下载多个文件:
$ ftp IP/hostname
ftp > mget *.html
显示远程主机上文件列表:
ftp > mls *.html
46. ssh命令
登录到远程主机:ssh username@remotehost.example.com
47. uptime命令
这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。
反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
另外,还有一个w命令,也是使用比较方便的,快速查看系统负载情况的命令。
48. dmesg命令
该命令会输出系统日志的最后10行。
49. vmstat命令
vmstat命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。
50. mpstat命令
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么可能是一个单线程应用程序引起的。
51. pidstat命令
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。
52. iostat命令
用于输出CPU和磁盘I/O相关的统计信息。
53. sar命令
sar 设备
sar命令在这里可以查看网络设备的吞吐率。
sar TCP
sar命令在这里用于查看TCP连接状态。
54. date命令
显示或设定系统的日期与时间。
命令参数:
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
55. free命令
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令参数:
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合
56. kill命令
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL"参数,其发送的信号为SIGKILL(9),将强制结束进程,使用ps命令或者jobs命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
常用参数:
-l 信号,若果不加信号的编号参数,则使用"-l"参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
57. ps命令
ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用top
Linux上进程有5种状态:
运行(正在运行或在运行队列中等待)
中断(休眠中,受阻,在等待某个条件的形成或接受到信号)
不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)
停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D:不可中断uninterruptible sleep(usually IO)
R:运行runnable(on run queue)
S:中断sleeping
T:停止traced or stopped
Z:僵死a defunct("zombie")process
命令参数:
-A 显示所有进程
-a 显示同一终端下所有进程
-c 显示进程真实名称
-e 显示环境变量
-f 显示进程间的关系
-r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程
58. rpm命令
Linux rpm命令用于管理套件。
rpm(redhat package manager)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
59. top命令
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
常用参数:
-c 显示完整的进程命令
-s 保密模式
-p<进程号> 指定进程显示
-n<次数> 循环显示次数
60. yum命令
yum(Yellow dog Updater, Modified)是一个在Fedora和Red Hat以及SUSE中的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
61. bzip2命令
创建*.bz2压缩文件:bzip2 test.txt。
解压*.bz2文件:bzip2 -d test.txt.bz2。
62. gzip命令
创建*.gz的压缩文件:gzip test.txt。
解压*.gz文件:gzip -d test.txt.gz。
显示压缩的比率:gzip -l *.gz。
63. tar命令
用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
常用参数:
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
- unzip命令
64. unzip命令
解压*.zip文件:unzip test.zip。
查看*.zip文件的内容:unzip -l jasper.zip。