福建微网站建设价格,网站建设实力,asp商品网站源码,济南网站开发定制5月份时曾部署上线了C的Web服务器#xff0c;温故而知新#xff0c;本篇文章梳理总结一下部署流程知识#xff1b; 最初的解决方案#xff1a;https://blog.csdn.net/BinBinCome/article/details/129750951?spm1001.2014.3001.5501后来的解决方案#xff1a;https://blog… 5月份时曾部署上线了C的Web服务器温故而知新本篇文章梳理总结一下部署流程知识 最初的解决方案https://blog.csdn.net/BinBinCome/article/details/129750951?spm1001.2014.3001.5501后来的解决方案https://blog.csdn.net/BinBinCome/article/details/129796690?spm1001.2014.3001.550 以下是本文的大概内容思维导图
一、最初的解决方案
原理 当用户注销logout或者网络断开时终端会收到 HUPhangup信号从而关闭其所有子进程。因此我们的解决办法就有两种途径要么让进程忽略 HUP 信号要么让进程运行在新的会话里从而成为不属于此终端的子进程。
方法1进程忽略HUP信号
命令 nohup (no hang up不挂起用于在系统后台不挂断地运行命令退出终端不会影响程序的运行。在默认情况下非重定向时会输出一个名叫 nohup.out 的文件到当前目录下如果当前目录的 nohup.out 文件不可写输出重定向到 $HOME/nohup.out 文件中。 使用
nohup ./IM_chat IMchat.log 21 - ./IM_chat : 当前文件目录下的新坑项目可执行文件- IMchat.log 21: 将标准错误 2 重定向到标准输出 1 标准输出 1 再被重定向输入到 IMchat.log 文件中- : 让命令在后台执行终端退出后命令仍旧执行其他知识 1、Linux中的0、1、2 0是standard input标准输入1是standard output标准输出2是standard error标准错误输出 2、停止运行进程的方法 ps -aux | grep “IM_chat” Kill - 9 进程号PID AI回答版知识 在Linux中0、1、2是特殊文件描述符用于表示标准输入stdin、标准输出stdout和标准错误stderr。它们在I/O重定向和管道操作中起着重要的作用。
标准输入stdin文件描述符0通常与键盘输入相关联。当程序需要从用户获取输入时可以读取标准输入流来接收用户的输入数据。例如通过命令行输入或从终端读取数据。标准输出stdout文件描述符1通常与显示器相关联。当程序产生输出时默认会将输出内容发送到标准输出流并在终端上显示。可以通过重定向操作将标准输出流重定向到文件以便将输出保存在文件中。标准错误stderr文件描述符2通常也与显示器相关联。与标准输出类似但标准错误流用于输出错误和警告消息而不是正常的程序输出。通常错误消息会直接打印到终端上而不受标准输出重定向的影响。 这些概念涉及到Linux的输入输出I/O机制和文件描述符的概念
输入输出I/O指计算机系统与外部设备之间的数据交换过程。在Linux中输入可以来自键盘、文件或其他进程的输出。输出可以显示在终端、写入文件或发送给其他进程。文件描述符在Linux中每个打开的文件包括设备和管道都与一个唯一的整数标识符相关联称为文件描述符。0、1和2是预定义的文件描述符分别对应标准输入、标准输出和标准错误。I/O重定向通过重定向操作可以改变程序默认的输入或输出位置。使用特殊的符号如、和将输入/输出从一个源/目标指向另一个源/目标。例如将命令的输出重定向到文件或从文件中读取输入而不是键盘。管道操作管道允许将一个进程的输出直接传递给另一个进程的输入以实现进程间通信。通过使用|符号可以将一个命令的输出连接到另一个命令的输入形成一个管道链。 这些机制使得在Linux系统中可以方便地控制输入和输出流以及处理输入输出的重定向和管道操作从而增强了程序的灵活性和可扩展性。
方法2进程运行在新会话
服务跑起来后过了段时间访问自己的写的webserver服务器里放的个人主页页面发现竟然挂了于是检查日志没发现啥问题于是尝试让进程运行在新会话的方法 screen 提供了 ANSI/VT100 的终端模拟器使它能够在一个真实终端下运行多个全屏的伪终端。如果有大量命令需要在稳定的后台里运行可以避免对每条命令都做这样的操作
yum -y install screen # 安装screen
screen -dmS sessionname # 建立一个处于断开模式下的会话sessionname可更改为自己的服务名
screen -list # 列出所有会话查看是否建立会话
screen -r sessionname # 重新连接指定会话,运行自己的服务用快捷键CTRL a d 来暂时断开当前会话。退出终端连接查看服务是否稳定运行
本次最初方案即srceen中组合nohup加上的组合拳终极版还能加上systemctl配置开机自启的参考文章
https://www.linuxprobe.com/process-run-in-background.htmlhttps://blog.csdn.net/Pan_peter/article/details/128875714
二、后来的解决方案
平稳运行大概大半个月后偶然发现服务又挂了不能忍了个人主页谁天天看在不在运行啊直接上脚本每一段时间自动检测一下服务是否运行中没运行的话就重启一下以下脚本可自己定义去修改非正式使用脚本
#!/bin/shwhile truedops -ef | grep temporaryfile | grep -v grep
#查找系统中含有temporaryfile字符的进程并且排除grep本身的进程。
if [ $? -eq 1 ]
#如果未运行
thenpython3 /home/xxx/xxxxxx.py
#启动应用修改成自己的启动应用脚本或命令echo process has been restarted!elseecho process already started!fisleep 60done参考文章https://zhuanlan.zhihu.com/p/599421452
三、最后的思考
虽然脚本的办法挺不错的服务一直运行到今天2023/9/3都没有挂过但是不由得思考两个问题 1、最开始的webserver服务为什么会挂掉看日志也没有分析出原因 2、大型企业的后台服务是怎样运行维护的呢不至于我这样一个一个的手动启动和查进程关闭或者使用脚本吧
ai回答 大型公司的后台Linux部署通常采用更为复杂和全面的解决方案。这些解决方案可能包括
容器化技术使用容器技术如Docker将应用程序和其依赖项打包成可移植的容器镜像从而实现隔离和可扩展性。自动化部署使用自动化工具如Ansible、Chef或Puppet来管理和部署服务器和应用程序实现快速、可靠的部署过程。高可用性和负载均衡使用负载均衡器和集群管理工具确保系统的高可用性和可扩展性。日志和监控使用日志记录和监控工具如ELK堆栈、Prometheus、Grafana等来收集、分析和监视系统的运行情况以及进行故障排除和性能优化。
服务挂掉的原因由于时间久远大概几个月前很难追溯了但是第二个问题却是可以继续推动无限进步
1、Docker技术 看完了w3c教程成功入门并用其搭建vulhub靶场过https://www.w3cschool.cn/docker/docker-command-manual.html 2、自动化部署工具 K8s是用于自动部署、扩缩和管理容器化应用程序的开源系统这个看来得学学了 3、负载均衡和高可用 负载均衡集群–知乎打开新世界大门原来负载均衡技术的实现除了我知道的nginx软件技术以外还有硬件技术的实现 4、日志和监控工具Elastic StackElasticsearch Logstash 和 Kibana Elastic Stack通常缩写为ELK是一种流行的三合一日志集中、解析和可视化工具可将来自多台服务器的大量数据和日志集中到一台服务器中。 ELK Stack 包含 3 种不同的产品 Logstash Logstash是一个免费的开源数据管道它收集日志和事件数据甚至处理数据并将其转换为所需的输出。使用名为“ beats ”的代理将数据从远程服务器发送到logstash。“ beats ”将大量系统指标和日志发送到Logstash然后对其进行处理。然后它将数据提供给Elasticsearch。 弹性搜索 Elasticsearch基于Apache Lucene构建是一个开源分布式搜索和分析引擎适用于几乎所有类型的数据——包括结构化和非结构化数据。这包括文本、数字和地理空间数据。 它于 2010 年首次发布。Elasticsearch是ELK堆栈的核心组件以其速度、可扩展性和 REST API 着称。它存储、索引和分析从Logstash传递的大量数据。 Kibana 数据最终传递给Kibana这是一个与Elasticsearch一起运行的 WebUI 可视化平台。Kibana允许您探索和可视化来自 elasticsearch 的时间序列数据和日志。它在直观的仪表板上可视化数据和日志这些仪表板采用各种形式例如条形图、饼图、直方图等。
要学的东西还有很多啊无限进步 以下是一些参考文章。
参考文章
https://zhuanlan.zhihu.com/p/604456459#:~:text6%E4%B8%AA%E6%AF%94%E8%BE%83%E5%A5%BD%E7%94%A8%E7%9A%84%E5%BC%80%E6%BA%90%E9%9B%86%E4%B8%AD%E5%BC%8F%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7%201%201%E3%80%81ManageEngine%20Log360%202%202%E3%80%81Elastic%20Stack%EF%BC%88Elasticsearch%20Logstash,3%203%E3%80%81Graylog%204%204%E3%80%81Fluentd%205%205%E3%80%81LOGalyze%206%206%E3%80%81NXloghttps://zhuanlan.zhihu.com/p/231806045#%E9%9B%86%E7%BE%A4%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9Fhttps://zhuanlan.zhihu.com/p/38982164https://kubernetes.io/