1.进程和线程的区别
进程:进程是资源分配的一个单位,也是程序执行的一个实例。程序运行时系统就会创建一个进程,并为此分配资源,然后把进程放入就绪队列。例如:Linux系统函数fork()可以在父进程中创建一个子进程。
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成。
区别:进程是资源分配的最小单位,线程是程序执行的最小单位。
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间, 而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。
2. 统计httpd协议连接数ps -ef | grep httpd | wc -l
3. 统计已连接的,状态为establish的netstat -na | greo ESTABLISH | wc -l
4. Tomcat工作模式? 笔者回答:Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
Tomcat作为独立服务器:请求来自于web浏览器;
5.我们一般通过hexdump命令 来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义
-C 是比较规范的 十六进制和ASCII码显示
-c 是单字节字符显示
-b 单字节八进制显示
-o 是双字节八进制显示
-d 是双字节十进制显示
-x 是双字节十六进制显示
6. ps aux 中的VSZ代表什么意思,RSS代表什么意思
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间
7. Linux系统的开机启动顺序
加载BIOS–>读取MBR(系统引导记录)–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。
8. 符号链接 是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。
硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置
9.awk行处理器
$# 脚本执行时,输入的参数的个数
Expect 中spawn代表启动脚本
argc == 1 就是说参数的个数为1.
argv是字符串数组,存的是参数,定义为char**或者char* argv[]
10、文件描述符
Linux系统预留可三个文件描述符:0、1和2,他们的意义如下所示:
0——标准输入(stdin)
1——标准输出(stdout)
2——标准错误(stderr)
标准输出——stdout
假设:在当前目录下,有且只有一个文件名称为123.txt的文件,这时我们运行这个命令【ls 123.txt】,就会获得一个标准输出stdout的输出结果:123.txt
11. expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等
转义字符:\n 新行 \r 回车 \t 制表符 \b 后退符 \a 警告
Awk 命令 awk -f: -F指定域分隔符为’:’。
Free 命令:显示已使用的物理内存。
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
Mysql 修改默认端口 3306 /etc/my.cnf port=3506
下面看一下public区域下所有已打开的端口,命令如下:
firewall-cmd --zone=public --list-port
脚本1 内存占用率
#!/bin/bash
USED=$(free | grep “Mem:” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲')
TOTAL=(free | grep “Mem:” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲')
USAGE=(expr $USED * 100 / $TOTAL)
echo “memusage:$USAGE%”
脚本2:
服务器安装ssh服务
yum install openssh-server service sshd.service 启动服务端
负载:top 命令可以查看CPU状态
firewalld 防火墙 firewall-cmd –version
firewall-cmd --state 查看防火墙状态
firewall-cmd --list-all-zone
sudo 文件提权
apache虚拟主机配置: /etc/httpd/conf/下
更改后重启 sudo chown -R(递归)
域名:/etc/host/
Apache
NIGINX伪静态:
查看某个端口的使用:netstat -naltp | grep 80
Reload比restart好用
正向代理与反向代理:反向代理主要应用于分布式部署场景中,
负载均衡:将服务器按照请求规则分发的过程称为负载均衡 。
hadoop fs -getmerge /user/hadoop/output local_file
zookeeper的使用
zookeeper 文件下的conf zoo_sample.cfg 该文件为配置文件
Zk作用体现:1.aster节点选举,应用于集群。
2.统一部署配置。
3.发布与订阅
4.提供分布式锁 (分布式环境中不同进程的资源竞争)
5.保证数据的一致性。
mZxid 代表创建的节点, Pzxid代表 numChildren代表子节点个数。
dataversion 代表修改版本 aclversuon 权限版本
create
set
delete
3.apache的基本使用
vim /etc/httpd/conf/httpd.conf 配置文件
firewall-cmd --zone=public --add-port=80/tcp –permanent 开启80端口
firewall-cmd --zone=public --add-port=80/tcp –permanent 查看80端口是否开启。
yum install lrzsz
nginx配置
配置防火墙
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重启iptables
firewall-cmd --zone=public --add-port=80/tcp --permanent
service iptables restart
#ee9ca7
#79a8ae
netstat -ntulp |grep 80
lrzsz
ps -A | grep -i mysql 查看mysql进程
保持ssh长连接
即你的家目录下的.ssh目录中,创建一个config文件
文件中的内容只有一行,内容是:
ServerAliveInterval 120
/etc/ssh/sshd_config
我们使用vim编辑器打开这个配置文件。
更改
ClientAliveInterval 60
ClientAliveCountMax 60
开机自启动:
/etc/init.d/
runlevel 查看当前用户系统的启动级别。
开机自启动设置: 写好自己的脚本 放到/etc/init.d 目录下。
在/etc/ rc*.d下设置软连接
• #ln -vsf(-v 显示链接过程 -s 软链接 -f 强制链接) 链接的文件位置 自己取得软连接名
S必须有 98是启动顺序。后面的名字随便用。
Ln -vsf 软连接名字。
useradd 示例 – 增加一个新用户到主要用户组¶
要增加用户 cnzhx 到组 developers,可以使用下面的指令:
useradd -g developers cnzhx
id cnzhx
Crontab
0 3 * * * /home/dbbackup/db1backup.sh backup
0 4 * * * /home/dbbackup/db2backup.sh backup
Shell编程总结
Unset 去掉变量
-z 判断是否为空 [ -z var]字符串比较x=haha;c=bb[“var ]
字符串比较
x=haha;
c=bb
[“var]字符串比较x=haha;c=bb[“x” =”$c” ] && echo qual 加双引号的目的是为了防止为空
df -h | tr -s " " “:” | cut -d: -f5 |cut -d% -f1
字符串匹配
~= 左侧字符串是否等于右侧字符串
[[KaTeX parse error: Can't use function '\.' in math mode at position 16: filename =~ .+\̲.̲sh ]] && echo sh || no
Test -a 判断是否文件存在
/bin/bash -n 脚本名
给数据库用户赋权:
Grant all on 数据库 to 用户@localhost identified by “123456”
find . -name “*.log” | tar czvf 2014.gz
xzf 解压参数 -C 解压到固定目录
seq 1 15 输出1到15
for ()
do
done
util 循环
结构
util
done
Case 选择语句 格式如下:
case $1 in
monitor_log)
monitor_log
;;
sed %s/目标字符/要替换的/ 替换文本
查看登录连接日志 /var/log/secure
防火墙设置:
/etc/sysconfig/iptables
禁止频繁ip访问:—A INPUT -s IP地址 -j DROP
查看Ip频繁访问
免秘钥登录:
批量同步