书接上篇
一查看selinux状态
SELinux的状态:
enforcing:强制,每个受限的进程都必然受限
permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志
disabled:禁用
相关命令:
getenforce: 获取selinux当前状态
sestatus :查看selinux状态
setenforce 0|1 0设置为 permissive 1设置为 enforcing
[root@localhost html]#getenforce
Enforcing
如果没有开启可以使用以下命令开启
[root@localhost html]#setenforce 1
永久开启需要修改 此处文件 /etc/selinux/config
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
yum install setools-console.x86_64 -y
若修改文本类型
为什么要做动、静分离?
在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do 等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js 等等文件),这些不需要经过后台处理的文件称为静态文件,否则动态文件。
因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗?当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决动、静分离将网站静态资源(HTML,JavaScript,CSS,img 等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问
这里我们将静态资源放到 Nginx 中,动态资源转发到 Tomcat 服务器中去。
当然,因为现在七牛、阿里云等 CDN 服务已经很成熟,主流的做法,是把静态资源缓存到 CDN
服务中,从而提升访问速度。
相比本地的 Nginx 来说,CDN 服务器由于在国内有更多的节点,可以实现用户的就近访问。并
且,CDN 服务可以提供更大的带宽,不像我们自己的应用服务,提供的带宽是有限的。
Nginx 负载均衡的算法怎么实现的? 策略有哪些?
为了避免服务器崩溃,大家会通过负载均衡的方式来分担服务器压力。将对台服务器组成一个集群,当用户访问时,先访问到一个转发服务器,再由转发服务器将访问分发到压力更小的服务器。
2. 权重 weight
weight 的值越大,分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。其次是为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
权重越高,在被访问的概率越大,如上例,分别是20%,80%。
upstream backserver {
server 192.168.0.12 weight=2;
server 192.168.0.13 weight=8;
}
ip_hash(IP 绑定)
每个请求按访问 IP 的哈希结果分配,使来自同一个 IP 的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的 session 共享问题
upstream backserver {
ip_hash;
server 192.168.0.12:88;
server 192.168.0.13:80;
}
fair(第三方插件)
必须安装 upstream_fair 模块。
对比 weight、ip_hash 更加智能的负载均衡算法,fair 算法可以根据页面大小和加载时间长短智能地进行负载均衡,响应时间短的优先分配。
# 哪个服务器的响应速度快,就将请求分配到那个服务器上。
upstream backserver {
server server1;
server server2;
fair;
}
url_hash(第三方插件)
必须安装 Nginx 的 hash 软件包
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
location 的作用是什么?
location 指令的作用是根据用户请求的 URI 来执行不同的应用,也就是根据用户请求的网站 URL 进行匹配,匹配成功即进行相关的操作。
location 的语法能说出来吗?
使用特定命令清空文件
① 使用 truncate 命令
truncate 命令用于缩短或扩展文件大小。在清空文件内容的情况下,我们可以使用 -s
选项指定新的大小为0。
优点:
truncate 操作非常快速,特别适用于大文件。
保留文件的元数据,包括文件名、权限等。
限制:
不适用于需要精确控制文件内容清空的场景,因为它只能清空到文件的开头。
不能清空只读文件,除非使用超级用户权限。
② 使用dd命令
dd 命令是一个强大的工具,用于复制和转换文件。在清空文件内容的情况下,我们可以使用 if=/dev/null 来将文件内容复制为空。
dd if=/dev/null of=filename
优点:
-
dd
提供了更多的灵活性,可以通过修改参数来满足不同需求。 -
保留文件的元数据,类似于
truncate
。
限制:
-
相较于
truncate
,dd
的使用语法相对较复杂,需要确保正确的参数设置。 -
在处理大文件时可能效率略低于
truncate
。
使用重定向符号清空文件
① 使用 > 符号
> 是一种重定向符号,它可以将输出重定向到文件。在清空文件的情况下,可以使用 > 将空内容写入文件。
> filename
优点:
使用 > 符号是一种非常简单和直观的方法,适用于快速清空文件。
不需要记忆复杂的命令选项,适合初学者。
限制:
不如 truncate 和 dd 灵活,只能清空文件内容,不能处理其他复杂的情况。
无法指定清空文件的起始位置,总是从文件开头清空。
使用定时任务清空文件
可以使用 cron
定时任务来定期清空文件。编辑定时任务配置文件:
crontab -e
#添加一行,表示每天凌晨1点清空文件:
0 1 * * * echo -n > /path/to/example.txt
安全注意事项
在清空文件时,需要注意一些安全性问题,以确保不会误操作或导致数据丢失。以下是一些建议:
1 备份文件内容
在执行清空操作之前,建议先备份文件内容。这可以通过复制文件到另一个位置或使用压缩工具创建文件备份来实现。
cp example.txt example_backup.txt
2 权限管理
确保执行清空操作的用户具有足够的权限。在某些情况下,可能需要使用超级用户权限,但请谨慎使用。
sudo truncate -s 0 example.txt
- 注意文件属性
清空文件时,文件的元数据(如权限、所有者等)通常是不变的,但仍然需要注意文件属性。确保清空操作不会导致文件属性的变化,特别是对于特殊权限的文件。
4 考虑文件系统类型
不同的文件系统可能对文件操作有不同的限制和要求。在清空文件之前,了解文件系统的特性是很重要的。
- 谨慎使用自动化脚本和定时任务
在使用自动化脚本和定时任务时,确保脚本和任务的逻辑正确,以防止意外的清空操作。在生产环境中,最好先在测试环境进行验证。
- 文件锁定和并发访问
如果有其他进程在使用文件,清空文件可能导致并发问题。在清空文件之前,考虑文件锁定或确保没有其他进程正在写入文件。
- 日志记录
在执行清空操作时,建议记录日志以便追踪操作的情况。这有助于排查问题和监控文件清空的历史记录。
总结
本文详细介绍了在Linux系统中快速清空文件而不删除它们的多种方法。通过命令行工具如 truncate 和 dd,重定向符号,以及文本编辑器 vim 和 nano 的使用,以及通过脚本自动化和定时任务的方式,我们可以根据不同的需求选择合适的方法。在执行文件清空操作时,请始终注意安全性问题,并根据实际情况采取相应的预防措施