目录
一、
1.Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别
同步:
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。
异步:
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。
有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回,它还会抢占cpu去执行其他逻辑,也会主动检测io是否准备好。
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
2.文件处理grep,awk,sed
二、shell
shell符号参考:
https://linux.cn/article-5657-1.html
1.shell命令
1.1$ {}与$
$
的作用相当于引用某变量的值,例如变量myvar,我们需要通过 myvar`$ { }中放的是变量,例如
echo $ {hello}
取hello变量的值并打印,也可以不加括号比如$hello
。
1.2. 单引号’'和双引号" "
两者都是解决变量中间有空格的问题。
单引号
''
剥夺了所有字符的特殊含义,单引号''
内就变成了单纯的字符.单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;str='this is a string'
双引号里可以有变量,双引号里可以出现转义字符
\
,
转义字符·\
放在特殊符号之前,转义特殊符号的作用,仅表示特殊符号本身,这在字符串中常用;
your_name='runoob'str="Hello, I know you are \"$your_name\"! \n"echo -e $str
输出
Hello, I know you are "runoob"!
1.3.反引号``与$()
反引号是命令替换,命令替换是指Shell可以先执行
中的命令,将输出结果暂时保存,在适当的地方输出。语法:command
$()也有命令替换的作用
1.4 chmod命令解析
1.4.1. 使用方式1 :chmod [who] [opt] [mode] 文件/目录名
a. 其中who
表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
b. opt
则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
c. 而mode
则代表权限:
r:可读
w:可写
x:可执行
1.4.2.使用方式2:chmod abc file
参数:其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
rwx属性则用二进制表示为 111,即 4+2+1=7。
若要rw-属性则110,即 4+2=6。
若要r-x属性则101 即4+1=5
1.4.3. 示例
为同组用户增加对文件a.txt的读写权限:
chmod g+rw a.txt
chmod a=rwx file
和chmod 777 file
效果相同
2.具体题目
2.1 echo expr 3/4
expr
是一款表达式计算工具,使用它能完成表达式的求值操作。echo `expr 3/4`
在进行计算时,表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。
如果没有空格,如上式所示,表达式会像字符串一输出,
3/4
如果有空格,
echo `expr 3 / 4`
会输出计算出的整数部分,结果为0
,若计算5/4
,结果为1
2.2 系统管理员编写扫描临时文件的shell程序tmpsc.sh, 测试该程序时提示拒绝执行,解决的方法有( )
A. chmod 644 tmpsc.sh
B. chmod 755 tmpsc.sh
C. chmod a+x tmpsc.sh
D. chmod u+x tmpsc.sh
为使用者u添加执行权限x便可,在rwx中x=1
原文:https://blog.csdn.net/qiqi__xu/article/details/89282407