1.简述shell脚本中$@与$#的区别(5分)。
$@:查看传递脚本所有参数的列表
$#:查看变量参数的个数
# 2. 进程的查看和调度分别使用什么命令?(5分)
进程查看的命令是ps和top/htop
进程调度的命令有at, crontab, batch,
3.什么是软链接,什么是硬链接,它们的区别是什么?(5分)
ln [TARGET] [LINK NAME] 默认创建硬连接。
示例:ln $PWD/hd1 hd2 会在当前目录创建文件的硬链接hd2。
在执行连接之前,存放连接的目录中不能有与链接名同名的文件。如果创建硬连接,则TARGET文件必须存在,并且不能是目录。
硬链接并没有建立新文件。相当于文件有一个别名,多个文件名使用一个 inode,增加了文件的硬链接计数。rm删除文件会减少硬链接计数,计数为0才会从文件系统中删除。
inode 号仅在各文件系统下是唯一的,当 Linux 挂载多个文件系统后将出现 inode号重复的现象。所以创建硬链接不能跨文件系统也不能跨分区。
2)符号链接(软链接)类似于Windows上的快捷方式。
ln –s [TARGET] [LINK NAME]。用ln -s命令建立符号连接时, TARGET最好用绝对路径。
示例:ln -s/bin/date $HOME/bin/t。在主目录下的bin目录创建符 号链接t指向/bin/date。
创建符号链接就会创建一个文件,此文件记录的是另一个文件的路径。删除源文件或目录,只删除了数据,不会删除软链接。一旦以同样文件名创建了源文件,连接将继续指向该文件。
符号链接的大小是其指向文件名称的字节数。
符号链接可以跨分区跨文件系统,在实际使用中,符号链接很普遍
可以通过stat命令 来查看文件的iNode 号
4.谈谈你对命令sed和awk的理解(5分)
sed的核心是正则,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。
awk的核心是格式化。awk是Unix环境下一种非常好的语言,适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行特殊技巧程序设计。对于短消息来说,比如处理话单文件,使用awk就非常方便。
请输出你知道的20 个LINUX 命令及作用(10分)
1.tar 指令可以分离执行 打包、压缩 这两个过程,
2.bc 其实就是计算器
3.grep [选项] 搜寻字符串 文件
4.find pathname -options 用于在文件树种查找文件,并作出相应的处理
5.cal命 令可以用来显示公历(阳历)日历,命令格式: cal [参数] [月份] [年份]
6.tail -f 可以用来查看不断更新的日志文件,日志文件不断更新,-f可以不断刷新显示末尾n行;动态监控文件。
7.less 的用途与 more一样,但是 less 的功能比 more 强大的多,查看文件
8.cat 查看文件内容。
9.mv 可以用来移动文件或者重命名,是Linux系统下常用的命令,经常用来备份文件或者目录语法:mv [选项] 源文件或目录 目标文件或目录。
10.cp语法:cp [选项] 源文件或目录 目标文件或目录功能: 复制文件或目录。
12.main访问 Linux手册页 的命令就是man语法: man [选项] 命令。
13.rmdir是一个与mkdir相对应的命令。mkdir是建立目录而rmdir是删除目录。
14.rm 删除文件或目录。
15.touch [选项] 文件...。功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
16.语法:cd 目录名,功能:改变当前工作目录。将当前工作目录改变到指定的目录下。
17. pwd功能:显示用户当前所在的目录的绝对路径
18.ls [选项] [目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
19.ps查看进程
20.ip 显示IP地址,MAC地址等信息
21. ping 检测网络连接是否连通。
22. netstat 命令显示网络连接、路由表、接口统计等信息。 netstat -anp查看端口是否被占用;
23.wget wget "链接" -O大写 文件名1.jpg;
24.ss 用于获取套接字统计信息。它可以显示类似于 netstat 的信息。
25.nethogs 是一个轻便的网络监控工具。
26.iftop iftop 命令监听指定接口(如 eth0)上的网络通信情况。
描述c/c++的开发过程使用的指令
gcc 编译链接C语言为文本,g++编译链接c++语言文本
gdb调试程序。
简述GDB相关指令
bt backtrace 显示当前调用堆栈
info function: 查询函数
info locals: 显示当前堆栈页的所有变量
print gdb_test(22) 将以整数22作为参数调用 gdb_test() 函数
b fn1 if a>b 条件断点设置
where 当前运行的堆栈列表;
layout split 显示源代码和反汇编窗口
info reg 可以显示寄存器内容。
info threads 查看当前所有的线程
thread n 切换到 id 为n的线程中
bt 查看堆的情况,
什么是段错误,什么原因会导致程序发生段错误?
一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是段错误就出现了,通过上面的解释,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。
1、访问不存在的内存地址
2、访问系统保护的内存地址
3、访问只读的内存地址
4、空指针废弃
5、堆栈溢出
6、内存越界(数组越界,变量类型不一致等)
描述你一般使用什么工具处理bug?
补丁程序。
简述 make 及 cmake
make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。
CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
编程题
1.设计一个shell程序,在/userdata目录下建立20个目录,并设置每隔目录的权限,其中其他用户的权限为只读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行(10分)
#!/bin/bash
for((i=1;i<=20;i++))
do
mkdir -p /usrdata/user$i
cd/usrdata
chmod 754 user$i
done
2.某系统管理员需要每天做一定重复的工作,请按照下列需求,编制一个解决方案
1)在下午4 :50删除/abc目录下的全部子目录和全部文件;(5分)
2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;(5分)
3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(5分)
4)在早晨8:00前开机后启动。(5分)
vim prgx 50 16 *** rm -r /abc/*
0 8-18 / 1 *** cut -f1 /xyz/x1>> /backup/bak01.txt
50 17***tar zcvf backup.tar.gz /data
root@xxx:#crontab prgx;
问题一:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
从根目录开始,依次将各级子目录的名字组合起来,形成的路径就称为某个文件的绝对路径
相对当前所在路径的位置, 依次与上下级目录文件组合,而形成的路径称为文件的相对路径
./为当前目录,../为上层目录。
主目录 ~/
切换目录 cd;
问题二:
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程: ps 执行退出: exit 查看当前路径: pwd
问题三:
怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
清屏: clear
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程 fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组 及用户名
查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser --help 这 个告诉你一些常用参数; info adduesr;
问题四
Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
ls 执行的功能: 列出指定目录中的目录,以及文件
哪些参数以及区别: a 所有文件 l 详细信息,包括大小字节数,可读可写可执行 的权限等
问题五:
建立软链接(快捷方式),以及硬链接的命令。
软链接: ln -s slink source
硬链接: ln link source
问题六:
目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
文件权限修改用什么命令?格式是怎么样的?
创建目录: mkdir;
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件 输出,都会创建文件;
复制文件: cp
文件权限修改用什么命令?格式是怎么样的?
文件权限修改: chmod
格式如下:
chmodu+xfile 给 file 的属主增加执行权限 chmod 751 file 给 file 的属主分配 读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户 分配执行(1)的权限 chmodu=rwx,g=rx,o=xfile 上例的另一种形式 chmod =r file 为所有用户分配 读权限
chmod444file 同上例 chmod a-wx,a+r file 同上例
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属 主分配读的权限
问题八:
查看文件内容有哪些命令可以使用?
vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数
问题九:
随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
写文件命令:vi
向屏幕输出带空格的字符串:echo hello world:
问题十:
终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
终端 /dev/tty
黑洞文件 /dev/null
问题十一:
移动文件用哪个命令?改名用哪个命令?
mv:
修改名件名或移动文件
mv 源文件 目标文件名 (改名)
mv 源文件 目标目录 (移动)
问题十二:
复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
cp cp -r ????
问题十三:
删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
rm rm -r rmdir
问题十四:
Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
“?”可替代单个字符。
“*”可替代任意多个字符。
方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
问题十五:
用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
问题十六:
Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印 出来。
grep [stringSTRING] filename
grep [^string] filename
问题十七:
Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
1、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
2、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而 进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个 特殊的状态。 正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
3、就绪状态:在 run_queue 队列里的状态
4、运行状态:在 run_queue 队列里的状态
5、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
6、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程 的尸体(task_struct)也释放掉
7、退出状态
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X 死掉的进程
问题十八:
怎么使一个命令在后台运行?
一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
问题十九:
利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
ps -ef (system v 输出)
ps -aux bsd 格式输出
ps -ef | grep pid
问题二十:
哪个命令专门用来查看后台任务?
job -l
问题二十一:
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
把后台任务调到前台执行 fg
把停下的后台任务在后台执行起来 bg
问题二十二:
终止进程用什么命令? 带什么参数?
kill [-s(信息名称或编号) ][程序] 或 kill [-l(信息编号) ]
kill-9 pid
问题二十三:
怎么查看系统支持的所有信号?
答案:
kill -l
问题二十四:
搜索文件用什么命令? 格式是怎么样的?
find (指定目录) (指定条件)(指定动作)
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name "string*"
问题二十五:
查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
答案:
查找自己所在的终端信息:who am i
查看当前谁在使用该主机:who
问题二十六:
使用什么命令查看用过的命令列表?
history
问题二十七:
使用什么命令查看磁盘使用空间? 空闲空间呢?
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% / /dev/hda1 494M 19M 450M 4% /boot
问题二十八:
使用什么命令查看网络是否连通?
Netstat ping
问题二十九:
使用什么命令查看 ip 地址及接口信息?
ifconfig
问题三十:
查看各类环境变量用什么命令?
查看所有 env
查看某个,如 home: env $HOME
问题三十一:
通过什么命令指定命令提示符?
\u:显示当前用户账号
\h:显示当前主机名
\W:只显示当前路径最后一个目录
\w:显示当前绝对路径(当前用户目录会以~代替)
$PWD:显示当前全路径
$:显示命令行’$'或者’#'符号
#:下达的第几个命令
\d:代表日期,格式为 week day month date,例如:"MonAug1"
\t:显示时间为 24 小时格式,如:HH:MM:SS
\T:显示时间为 12 小时格式
\A:显示时间为 24 小时格式:HH:MM
\v:BASH 的版本信息 如 export PS1=’[\u@\h\w#]$‘
问题三十二:
查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
whereis [-bfmsu][-B ...][-M ...][-S ...][文件...]
补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性 应属于原始代码,二进制文件,或是帮助文件。
-b 只查找二进制文件。
-B 只在设置的目录下查找二进制文件。 -f 不显示文件名前的 路径名称。
-m 只查找说明文件。
-M 只在设置的目录下查找说明文件。-s 只查找原始代码文件。
-S 只在设置的目录下查找原始代码文件。 -u 查找不包含指定 类型的文件。 w -h ich 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且 返回第一个搜索结果。
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件 名。
-p 与-n 参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位 的宽度。
-V 显示版本信息
问题三十三:
通过什么命令查找执行命令?
which 只能查可执行文件
whereis 只能查二进制文件、说明文档,源文件等
问题三十四:
怎么对命令进行取别名?
alias la='ls -a'
问题三十五:
du 和 df 的定义,以及区别?
du 显示目录或文件的大小
df 显示每个所在的文件系统的信息,默认是显示所有文件系统。 (文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘 分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的, 通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
问题三十七:
当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
可以使用 bind 命令,bind 可以很方便地在 shell 中实现宏或按键的绑定。
在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。
比如获取 F12 的字符序列获取方法如下:先按下 Ctrl+V,然后按下 F12 .我们就可 以得到 F12 的字符序列 ^[[24~。
接着使用 bind 进行绑定。
[root@localhost ~]# bind ‘”\e[24~":"date"'
注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。
也可以使用 showkey -a 命令查看按键对应的字符序列。
问题三十八:
如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
使用命令 compgen -c,可以打印出所有支持的命令列表。
[root@localhost ~]$ compgen -c
l. ll ls which if then else elif fi case...
问题三十九:
如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
使用 Linux 命令 dirs 可以将当前的目录栈打印出来。
[root@localhost ~]# dirs /usr/share/X11
目录栈通过 pushd popd 来操作。
问题四十:
你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
答案:
使用 linux 命令 ’disown -r ’可以将所有正在运行的进程移除。
问题四十一:
bash shell 中的hash 命令有什么作用?
linux 命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。
[root@localhost ~]# hash
hits command
2 /bin/ls
2 /bin/su
问题四十二:
哪一个bash内置命令能够进行数学运算。
bash shell 的内置命令 let 可以进行整型数的数学运算。
#! /bin/bash … … let c=a+b
问题四十三:
怎样一页一页地查看一个大文件的内容呢?
通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个 需要.
[root@localhost ~]# cat file_name.txt | more
问题四十五:
怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?
使用命令 whatis 可以先出显示出这个命令的用法简要,比如,你可以使用 whatis zcat 去查看‘zcat’的介绍以及使用简要。
[root@localhost ~]# whatis zcat
问题四十六:
Linux的基本组件是什么
内核,shell和GUI,系统实用程序和应用程序
问题四十六:
BASH和DOS之间的基本区别是什么?
BASH命令区分大小写,DOS命令则不区分大小写;
DOS遵循命名文件中的约定,即8个字符的文件名后跟一个点,扩展名为3个字符。
问题四十七:
什么是重定向?
重定向 是一种特殊的页面,它提供一种运作机制,使得人们在输入该名称进入条目或者点击指向该名称的内部链接时,系统能够自动导航到重定向页面内部指定的另一相关页面中,从而实现相关页面可以以多个名称进行访问。