linux面试题
Linux简介
Linux是一套免费使用和自由传播的开放源码的类Unix操作系统。
linux内核:内核它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等是操作系统的核心,操作系统则是linux内核再加上像shell或图形界面和其他的实用软件
Linux和unix:
Unix出现最早,linux是参考unix开发的,UNIX 是商业软件,而 Linux 是开源软件
linux代码语言:Linux内核大部分是用C语言编写的,还有部分是用汇编语言写的,Linux的一些组件系统和附加应用程序是用C、C++、Python、perl等语言写的。
CentOS:是linux 发行版之一,完全开源,免费使用
linux目录结构及一般用法
bin (binaries)存放二进制可执行文件
sbin (super user binaries)存放二进制可执行文件,只有root才能访问
etc (etcetera)存放系统配置文件
usr (unix shared resources)用于存放共享的系统资源,比如安装jdk,tomcat
home 存放用户文件的根目录
root 超级用户目录
dev (devices)用于存放设备文件
lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt (mount)系统管理员安装临时文件系统的安装点
boot 存放用于系统引导时使用的各种文件
tmp (temporary)用于存放各种临时文件
var (variable)用于存放运行时需要改变数据的文件,比如log日志
修改网卡的目录:/etc/sysconfig/network-scripts
修改环境变量的目录:/etc/profile
修改主机名的目录:/etc/sysconfig/network
修改host文件目录:/etc/hosts
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
linux常用命令
source命令 如:source /etc/profile 修改完后重新加载配置文件
hostname 查看主机名
hostname myhost 临时修改hostname为myhost
ifconfig 显示或配置网卡信息
history(查看命令历史)
ls:(list的缩写)显示文件和目录列表(文件目录名)
ll:显示当前目录下的目录(权限大小用户目录名等)
cd 切换目录(change directory)
cd:什么都不加,回家,跟cd ~效果一样,到用户根目录了
cd ~xgss 进入到xgss用户根目录
cd -返回到原来目录
pwd 显示当前工作目录(print working directory)
mkdir 创建目录(make directoriy)
touch 创建空文件
> 创建空文件
cp 复制文件或目录(copy)
mv 移动文件或目录、文件或目录改名(move)
rm 删除文件(remove)
cat显示文本文件内容 (catenate)
more、less 分页显示文本文件内容(more历史比less久;less功能比more多(如还可以向前翻页,可以向前搜索等,more只能向后);)
对于more:
空格 向下滚动一屏
Enter 向下1行
Ctrl +f 向下滚动一屏
Ctrl+B 返回上一屏
q退出more
对于less:
空格键 滚动一页
回车键 滚动一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
↓: 向下翻动一页
↑: 向上翻动一页
q退出less
head、tail查看文本中开头或结尾部分的内容
head -n 5 a.log 查看a.log文件的前5行
tail -n 5 a.log 查看a.log文件的后5行
tail -f b.log 循环读取(fellow)
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
wc 统计文本的行数、字数、字符数(word count)
find 在文件系统中查找指定的文件
echo 输出或向文件中写入内容 echo aaa输出aaa,echo ‘aaa’ > a.text 创建并把aaa写入a.txt,会覆盖文件中的内容
>> 向README文件追加写入"please read me first":echo "please read me first" >> README
grep 在指定的文本文件中查找指定的字符串
top 用来监控Linux的系统状况,比如cpu、内存的使用
ps 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
kill 杀死一个进程
df 显示文件系统磁盘空间的使用情况
du 显示指定的文件(目录)已使用的磁盘空间的总大小
free 显示当前内存和交换空间的使用情况
netstat 显示网络状态信息
netstat -an | grep 8080 显示占用含有8080数字的端口信息
vim或vi 这样就进入一般模式,要进入编辑模式,按 i或a或o进入编辑模式,编辑完成,按esc进入一般模式,:进入底行模式,:wq保存并退出,或esc后shit+zz进行保存退出,如果不保存退出:q!
一般模式下:
gg所有行首字母
G末行首字母
0本行行首
$跳到本行行尾
/要搜索的字符串 可以在一般模式下搜索内容并光标定位到那里
gzip 压缩(解压)文件或目录,压缩文件后缀为gz
bzip2 压缩(解压)文件或目录,压缩文件后缀为bz2
tar 文件、目录打(解)包
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
tar -zxvf /opt/soft/test/log.tar.gz 解压gzip,默认解压到当前目录
tar -jxvf /opt/soft/test/log.tar.bz2 解压bzip2
tar -zxvf /opt/soft/test/log.tar.gz -C 欲解压缩的目录 来解压到指定目录
shutdown系统关机
-r 关机后立即重启
-h 关机后不重新启动
halt 关机后关闭电源
reboot 重新启动
useradd 添加用户
passwd 用于设置用户的认证信息,包括用户密码、密码过期时间等
usermod 修改用户
userdel 删除用户
groupadd 添加组
groupmod 修改组
groupdel 删除组
groups 显示用户所属组 查看tomcat的组信息 :groups tomcat
gpasswd 对用户组进行管理
su 切换当前用户身份到其他用户身份
visudo 修改/etc/sudoers 进行授权sudo权限
sudo 用来以其他身份来执行命令,预设的身份为root。
chmod 用来变更文件或目录的权限。
0什么权限也没有
1拥有执行权限
2拥有写权限
3拥有写和执行的权限
4拥有读的权限
5拥有读和执行的权限
6拥有读和写的权限
7读写执行权限都有
chmod 750 b.txt 表示对b.txt,所属用户具有读写执行权限,所属组拥有读和执行权限,其他用户没有权限。
r=4,w=2,x=1,-=0
chmod a=wx c.txt 或chmod 333 c.txt 创建c.txt文件所有人都可以写和执行
chmod ug+w,o-w a.txt b.txt 创建a.txt和b.txt文件,将他们设为其拥有者和所在组可写入,但其他以外的人则不可写入
chmod -R a+r /itcast 将/itcast目录下的所有文件与子目录皆设为任何人可读取,-R 下面的文件和子目录做相同权限操作(Recursive递归的)
软件安装:
有的软件解压包就可以了用tar命令
rmp -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm 安装rpm软件
rpm -e 软件名 卸载
yum -y install yum安装,yum能在线下载并安装rpm包,能更新系统,
且还能自动处理包与包之间的依赖问题
service iptables status 查看防火墙状态
service iptables start 开启防火墙 即时生效,重启后失效
service iptables stop 关闭防火墙 即时生效,重启后失效
chkconfig iptables on 开启防火墙 重启后永久性生效
chkconfig iptables off 关闭防火墙 重启后永久性生效
使用iptables开放如下端口
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
保存
/etc/rc.d/init.d/iptables save
重启服务
service iptables restart
查看需要打开的端口是否生效?
/etc/init.d/iptables status
法2:
或直接编辑/etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 4000 -j ACCEPT
uname用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
lsof -i:9096 查看9096端口是否被占用
找到指定tomat进程并kill掉
ps -ef | grep tomcat 找到名为tomcat的程序进程,然后kill -9 pid 杀掉进程
“-e ”参数代表显示所有进程,“-f”参数代表全格式。
|代表上面的结果作为后面的输入
grep命令是查找
项目cpu过高
使用top命令查看那个进程消耗cpu较高如:top
通过 jstack命令输出进程的堆栈信息到文件中如: jstack 6633 > cpu1128.log
top命令能查看系统的内存cpu进程数量等
使用过得操作linux命令的工具
secureCRT
Xshell
查看使用内存最多的K个进程
方法一:
ps -aux | sort -k4nr | head -K
说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
方法二:
top
查看使用CPU最多的K个进程
ps -aux | sort -k3nr | head -K
查看占用某端口的进程
lsof -i:端口号
netstat -tunlp |grep 端口号
查看某进程监听的端口
ps -aux | grep tomcat
查看系统负载
top命令查看linux负载:
|
top - 01:18:39 up 2 days, 18:54, 1 user, load average: 0.04, 0.03, 0.05
//01:18:39:系统当前时间 //up 2 days, 18:54 :系统开机到现在经过了2天 //1 users:当前1用户在线 //load average:0.04, 0.03, 0.05:系统1分钟、5分钟、15分钟的CPU负载信息. |
查看进程中线程的状态
1、top -H
2、查制定进程的:
top -H -p <pid>
文件句柄说明
1.只有windows中才有句柄,windows中的句柄是指针的指针,因为windows中对象的经常会在内存中移动(如进行垃圾回收后),所以地址值经常会变,所以就对外提供一个指针的指针即句柄给用户,句柄的地址是不会变的。
2.linux中是没有文件句柄的,只有文件描述符,只是大家习惯把它说成句柄。
- linux中, 每当进程打开一个文件时,系统就为其分配一个唯一对应的整型文件描述符(从0开始),用来标识这个文件。linux 操作系统通常对每个进程能打开的文件数量有一个限制。默认是1024。
用户进程和内核进程
传输层以上(不包括)是用户进程,传输层及以下是内核进程
内核进程比用户进程的权限高
各种题目
复制A文件中的第三行到B文件
head -3 a.text| tail -1 >b.text
说明:
head -3 a.text是查看a.text的前三行
|代表管道,前面的输出作为后面的输入
tail -1 是查看内容的最后一行
>b.text是把前面的内容覆盖写入b.text文件中

浙公网安备 33010602011771号