当前位置: 首页 > news >正文

成都网站设计公司哪家好河南建设工程信息网招标公告

成都网站设计公司哪家好,河南建设工程信息网招标公告,工程建设企业网站,免费看国际短视频软件缘起 如果你有台腾讯云主机,会发现默认有个叫 YunJing 的进程。 把它kill掉后,发现一段时间又出现了 这是为什么捏? 分析定时任务配置文件 通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。 */30 * * * * root /usr/local/qc…

缘起

如果你有台腾讯云主机,会发现默认有个叫 YunJing 的进程。
image.png
把它kill掉后,发现一段时间又出现了

image.png

image.png
这是为什么捏?
5637557320fbfb3292307735f0b8acd53a791241.png@112w_112h.png

分析定时任务配置文件

通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。

*/30 * * * * root /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1
@reboot root sleep 30 && /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1
*/5 * * * * root /usr/local/qcloud/YunJing/clearRules.sh > /dev/null 2>&1

简单分析下:
1.第一行是说,每30分钟运行一次YDCrontab.sh脚本,丢掉输出的结果。
2.第二行是说,在重启后,延迟30秒会运行一次 YDCrontab.sh 脚本。
3.第三行是说,每5分钟执行一次 clearRules.sh脚本。

分析定时任务脚本

来看下YDCrontab.sh这个脚本文件 cat /usr/local/qcloud/YunJing/YDCrontab.sh

#! /bin/shumask 0022
unset IFS
unset OFS
unset LD_PRELOAD
unset LD_LIBRARY_PATH
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'if [ -w '/usr' ]; thenmyPath="/usr/local/qcloud/YunJing/YDLive"
elsemyPath="/var/lib/qcloud/YunJing/YDLive"
fi
agent_name="$myPath/YDLive"check_user()
{if [ "root" != "`whoami`" ]; thenecho "Only root can execute this script"exit 2fi    
}check_alive()
{status=`ps ax | grep "$agent_name" | grep -v "grep" |wc -l`if [ $status -ne 0 ]; then# process existecho "YunJing agent already exist"exit 1fi        
}### Main Begin ###check_user
check_alive
cd $(dirname $0)
export GODEBUG=madvdontneed=1,netdns=go
nohup $agent_name >/dev/null 2>&1 &ret=$?
if [ $ret -eq 0 ]
thenecho "YunJing agent run succ"
elseecho "YunJing agent run failed, errcode: $ret"
fi
exit $ret### Main End ###
  1. 第3行是 指定在建立文件时预设的权限掩码, 022 表示默认创建新文件权限为755 也就是 rxwr-xr-x(所有者全部权限,属组读写,其它人读写)
  2. 第4-7行呢是取消设置相应环境变量。将环境设置为默认状态。
    a. IFS 内部字段分隔符,用于指定 bash 应如何解释命令或数据中的空格。
    b. OFS 代表输出字段分隔符,用于确定写入文件时用于分隔单词的字符。
    c. LD_PRELOAD 超脱于动态链接库的搜索路径先后顺序之外,它可以指定在程序运行前优先加载的动态链接库。
    d. LD_LIBRARY_PATH用于指定查找共享库(动态链接库)时除了默认路径(./lib和./usr/lib)之外的其他路径。
  3. 第10-14行,检查当前执行脚本的用户是否是 root, 不是就给予提示并以状态2退出, 2表示用法不当(Incorrect Usage),shell内建命令使用错误。
  4. 第25-35行,检查 YDLive agent 进程个数,如果不等于(-ne)0, 则认为是程序存在。打印信息并退出,1表示通用错误。
  5. 第40行,将工作目录更改为与脚本相同的目录。
  6. 第41行,更新GODEBUG环境变量。
    a.netdns 默认情况下,使用纯粹的 Go 解析器,因为阻塞的 DNS 请求仅消耗一个 goroutine ,而阻塞的 C 调用消耗操作系统线程。(这个效率比cgo效率高啊!)
    b. 设置 madvdontneed=1 将会在Linux上当内存返回内核时使用 MADV_DONTNEED 代替 MADV_FREE
  7. 第42行,若前面的检测成功,那么把YDLive以后台模式运行。
  8. 第44-50行,检查是否成功启动,启动失败会打印错误码

Go内存释放策略

Go 使用 madvise 系统调用来释放物理内存给操作系统,该方法主要有两种归还类型可选:
MADV_DONTNEED:立即归还物理内存给操作系统,如果下次访问到该范围的内存,则会触发 page fault 异常,需要重新分配物理页,使用该类型可以减少程序的RSS占用。
MADV_FREE告诉操作系统这块内存已经不需要使用了,可以回收了,如果内存紧张,操作系统就会将其回收。这实际是一个lazily的释放过程。如果再次访问这块内存的时候,操作系统还没有将其回收,是不会触发 page fault 的。使用该类型,可能程序的RSS不会减少。

总结

通过这次分析学习,了解到了使用定时任务保持进程活跃的方法和Go内存的回收策略,真是太好啦。
c8e919a83f19aa615d0a24cb1e752a449561.gif


参考:
孙兴芳 [Golang环境变量之GODEBUG] (https://www.jianshu.com/p/94a9c41d503d)
(https://www.jianshu.com/p/94a9c41d503d)
can [go中的物理内存释放](https://mcll.top/2020/04/13/go%E4%B8%AD%E7%9A%84%E5%86%85%E5%AD%98%E9%87%8A%E6%94%BE/)

http://www.yayakq.cn/news/99267/

相关文章:

  • 做国内学历公证的网站wordpress 会被取代吗
  • 通辽公司做网站短视频公司网站建设方案
  • 做dw网站图片怎么下载地址wordpress分类网站
  • 如何做好一个外贸进网站的编辑学网站开发培训
  • 面包机做面包网站东莞市建设网站首页官网
  • 网站建设费属于广告费用吗跨平台网站开发
  • 网站不兼容怎么办网站开发网站设计素材
  • 网站的分辨率是多少像素做网站都需要建哪些文件夹
  • 做会计要看什么关注什么网站社交网络推广方法有哪些
  • 网站建设尢首先金手指免费网站建设 免备案
  • 柳州网站建设价格wordpress获取用户名
  • 南宁企业网站建设技术公司app网站下载免费
  • 企业网站一年多少钱手机怎么做网站添加背景音乐
  • 深圳房产网站建设口碑好的合肥网站建设
  • 有了网站源码如何做网页全国各大网站
  • 网站建设源代码交付有哪些可以免费做视频的网站
  • 开江网站建设做淘客网站备案
  • 网站建设用什么系统好免费产品推广软件
  • 有没有做美食的小视频网站360网站排名怎么做
  • 江西省大余县建设局网站怎么做一个企业网站
  • 类似+wordpress+建站网站被黑了怎么恢复
  • 雷山网站建设asp网站建设 文献
  • 关于建设旅游网站的书籍恩施seo
  • 公司做网站设计要注意重庆建设人才促进网
  • .net做的大型网站吗黄页查企业名录
  • 东营seo网站排名erp软件公司
  • 信息流广告公司排名网站seo在线优化
  • xiu主题做的网站vue cms 网站开发
  • 营销网站制作多少钱wordpress验证码失效
  • 建网站推广效果怎么样做的网站上更改内容改怎么