@@ -10,7 +10,8 @@ InterviewFAQ-Linux
1010 - [ 文件系统] ( #文件系统 )
1111 - [ 开机启动过程] ( #开机启动过程 )
1212 - [ Swap] ( #swap )
13- - [ iptables] ( #iptables )
13+ - [ Iptables] ( #iptables )
14+ - [ Shell操作] ( #shell操作 )
1415 - [ 操作系统] ( #操作系统 )
1516 - [ IO模型] ( #io模型 )
1617 - [ 进程,线程,协程] ( #进程线程协程 )
@@ -19,6 +20,7 @@ InterviewFAQ-Linux
1920 - [ 内核态和用户态] ( #内核态和用户态 )
2021 - [ 进程间通信] ( #进程间通信 )
2122 - [ 死锁] ( #死锁 )
23+ - [ 变量存储区域] ( #变量存储区域 )
2224
2325Linux
2426-----
@@ -264,7 +266,7 @@ Linux
264266 - 服务器休眠时,运行中的程序状态会被记录到swap
265267 - 某些程序运行时会利用swap的特性
266268
267- ### iptables
269+ ### Iptables
268270
269271- filter
270272 - INPUT
@@ -291,6 +293,99 @@ Linux
291293 - iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
292294 - 只允许某个IP上网
293295
296+ ### Shell操作
297+
298+ - find /data -type f -name "* .txt" | xargs sed -i 's/oldgirl/oldboy/g'
299+ - mkdir -p /data/oldboy && echo
300+ - 算术运算
301+ - $[ ]
302+ - $(())
303+ - $(expr a + b) 或者 ` expr a \* b ` :注意运算符两边要空格,且乘法符号要转义
304+ - 查看http的并发请求数与其TCP连接状态
305+ - netstat -tan | awk '/^tcp\> /{split($5,ip,":");count[ ip[ 1]] ++}END{for(i in count) print i,count[ i] }'
306+ - awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10
307+ - cat /dev/urandom | head -1 | md5sum | haed -c 5
308+ - watch -n 1 "/sbin/ifconfig eth0 | grep bytes"
309+ - find /opt -size +15k -exec mv {} /tmp/ \;
310+ - sed和awk
311+ - 如果文件是格式化的,即由分隔符分为多个域的,优先使用awk
312+ - awk适合按列(域)操作,sed适合按行操作
313+ - awk适合对文件的抽取整理,sed适合对文件的编辑。
314+ - 写一个脚本,该脚本能对标准的apache日志进行分析并统计出总的访问次数和每个访问ip的访问次数,按访问次数列出前5名?
315+ - 显示/test下所有目录
316+ - ls -d * /
317+ - find . -type d -maxdepth 1
318+ - ls -F | grep '/$'
319+ - ls -l | grep '^d' | awk '{print $9}'
320+ - 将文件/etc/a 下中除了 b文件外的所有文件压缩打包放到/home/a下,名字为a.tar.gz
321+ - tar -exclude /etc/a/b -Pcvfz /home/a/a.tar.gz /etc/a
322+ - 如何查看某进程打开的所有文件
323+ - lsof -p \` ps -ef | grep crond | awk '{print $2}'`
324+ - 获取网卡eth0的80端口的数据包信息,找出访问最高的
325+ - tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F "." '{print $1"."$2"."$3"."$4"."}'|sort|uniq -c|sort -nr|head -5
326+ - 查看/var/log目录下的文件数
327+ - ls /var/log -1R | grep "-" | wc -l
328+ - 查看Linux系统每个IP的连接数
329+ - netstat -n | awk '/^tcp/{print \$ 5}' | awk -F":" ’{print $1}' | sort | uniq -c | sort -rn
330+ - 用iptables控制来自192.168.1.2主机的80端口请求
331+ - iptables -A INPUT -p tcp -s 192.168.1.2 -dport 80 -j ACCEPT
332+ - Linux如何挂载Windows下的共享目录
333+ - mount .cifs //IP地址/server /mnt/server -o user=username,password=123
334+ - 生成32位随机密码
335+ - cat /dev/urandom | head -1 | md5sum | head -c 32
336+ - 密码加密
337+ - echo abc | openssl md5
338+ - echo abc | openssl base64
339+ - echo abc | openssl sha
340+ - ps aux 中的VSZ代表什么意思,RSS代表什么意思?
341+ - VSZ:虚拟内存集,进程占用的虚拟内存空间
342+ - RSS:物理内存集,进程占用的实际物理内存空间
343+ - 修改内核参数
344+ - vi /etc/sysctl.conf
345+ - sysctl -p
346+ - 取0-39随机数
347+ - expr $[ RANDOM%39] + 1 \# 注意操作符两边的空格
348+ - 限制apache每秒新建连接数为1,峰值为3
349+ - iptables -A INPUT -d 172.16.100.1 -p tcp -dport 80 -m limit -limit 1/second -j ACCEPT
350+ - 怎么把脚本添加到系统服务里,即用service来调用?
351+ - 脚本里添加
352+ - \# !/bin/bsh
353+ - \# chkconfig: 345 85 15
354+ - \# description: httpd
355+ - chkconfig httpd -add
356+ - service start httpd
357+ - 按修改时间排序显示目录中的文件
358+ - ls -lrt /etc
359+ - 打印文件的权限值
360+ - stat -c %a /etc/inittab
361+ - 查看 ARP 缓存记录的命令是?
362+ - “arp –a”
363+ - 软件工具的原则
364+ - 一次做好一件事
365+ - 处理文本行,不要处理二进制数据
366+ - 使用正则表达式
367+ - 默认使用标准输入、输出
368+ - 避免喋喋不休
369+ - 输出格式必须与可接受的输出格式一致
370+ - 让工具去做困难的部分
371+ - 构建特定工具前,先想想
372+ - 获取密码
373+ - printf "Enter new password:"
374+ - stty -echo
375+ - read pass < /dev/tty
376+ - printf "Enter again:"
377+ - read pass2 < /dev/tty
378+ - stty echo
379+ - 在程序中执行跟踪:
380+ - set -x:打开跟踪功能
381+ - set +x:关闭跟踪功能
382+ - 为/home/qiuye目录结构建立一份副本在/home/qy下
383+ - find /home/qiuye -type -d -print | sed 's;/home/qiuye/;/home/qy/;' | sed 's/^/mkdir /' | sh -x
384+ - sed 's/Tony/Camus/2':只替换第二次匹配到的
385+ - 单词频率过滤器
386+ - tr -cs A-Za-z\' '\n' | tr A-Z a-z | sort | uniq -c | sort -k1,1nr -k2 | head 25
387+ - tcpdump tcp port 80 -s 0 -w net_stat.pcap
388+
294389操作系统
295390--------
296391
@@ -597,3 +692,22 @@ Linux
597692 2. 撤销进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等。
598693
599694- 如何制造死锁
695+
696+ ### 变量存储区域
697+
698+ + 栈:
699+ + 由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。
700+ + 地址是不固定的。
701+ + 存储的变量通常是局部变量、函数参数等。
702+ + 堆:
703+ + 由new分配的内存块,它们的释放编译器不去管,而是由应用程序去控制,一般一个new就要对应一个delete。
704+ + 如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
705+ + 自由存储区:
706+ + 由malloc等分配的内存块,和堆是十分类似,不过它是用free来结束自己的生命的。
707+ + 全局存储区(静态存储区):
708+ + 全局变量和静态变量的存储是放在一块的。
709+ + 初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
710+ + 程序结束后由系统释放。
711+ + 常量存储区:
712+ + 这是一块比较特殊的存储区,位置是固定的。
713+ + 这里面存放的是常量,不允许修改。
0 commit comments