Skip to content

Commit ea2b78e

Browse files
committed
更新变量存储区域
1 parent 07c0e59 commit ea2b78e

File tree

1 file changed

+116
-2
lines changed

1 file changed

+116
-2
lines changed

README.md

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2325
Linux
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

Comments
 (0)