运维工程师一般有系统运维、网络运维、运维开发、数据库运维、云运维等方向,今天主要介绍系统运维工程师所需要具备的一些技能和考证方面.
系统运维工程师必备技能
系统运维工程师不仅需要有Linux基本操作技能,还应该会服务器硬件、以及企业里常用的双机集群、Windows、VMware、数据库等技能,这样才能有担任合格的系统运维工程师.
需要特别注意企业里物理机都是用双机集群,一定要掌握双机集群的技能,包括Linux双机集群、Windows双机集群、Oracle Rac数据库集群、SQL Server数据库集群等.
运维工程师必须掌握的基础技能有:基础命令、基础服务、自动化技能、安全.
①.、基础命令:
这个基础就包括:用户管理命令,文件管理命令,权限管理命令,软件包管理命令,vim命令,网络管理命令等.这些命令好学,因为每个命令都有相应的help帮助文档,而且很多网站都集成了命令帮助,把这些站点进行收藏,时不时的查下就记住了.
企业常用的基础服务就包括DHCP,NTP,DNS,Nginx,Apache,Mysql,Redis,Vsftpd,Nfs.基础服务的掌握,相比命令稍微的难一点,但是同样有很多技巧.比如可以去各大视频站获取优质的免费视频学习.
作为运维工程师,首先就要时刻保障公司业务系统,服务器安全稳定运行.所以安全至关重要,主流的iptables,firewalld防火墙技术要熟练掌握,有必要的话常见的挖矿病毒,ddos等攻击有段也要有所了解.
运维工程师(Operations),负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI.
运维工程师面对的最大挑战是大规模集群的管理问题,如何管理好几十万台服务器上的服务,同时保障服务的高可用性,是运维工程师面临的最大挑战.
简单学习了golang/go语言的基础语法,做个定时切割nginx日志的小脚本练习下,感觉挺好使的~
脚本代码如下,install后将脚本加入到crontab定时运行,当然golang也可以自己定时执行,这里加入到crontab运行,是因为golang进程有可能会被kill掉....
package main
import (
"fmt"
"os"
"path/filepath"
"syscall"
"time"
"strings"
"os/exec"
"io/ioutil"
)
func main(){
//日志目录
srcDirPath := "/usr/local/nginx/logs"
//存放切割日志目录
targetDirPath := "/usr/local/nginx/logs/history"
//ngixn进程ID文件
nginxPidPath := "/usr/local/nginx/logs/nginx.pid"
//检查存放切割日志目录是否存在,如果不存在则创建
finfo, errFile := os.Stat(targetDirPath)
if errFile !=nil {
if errFile != nil {
fmt.Println("创建日志目录失败:"◆errFile.Error())
return
}
} else if !finfo.IsDir() {
fmt.Println(targetDirPath◆"已经存在且不是一个目录")
//获取当前日期,作为此次切割日志根目录
t := time.Now()
logPath := targetDirPath◆"/"◆nowDateTime
//获取nginx的进程ID
pfile,err := os.Open(nginxPidPath)
defer pfile.Close()
if err != nil {
fmt.Println("not found nginx pid file")
pidData,_ := ioutil.ReadAll(pfile)
pid := string(pidData)
pid = strings.Replace(pid,"\n","",-1)
//遍历日志目录
filepath.Walk(srcDirPath,func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
} else {
//获取切割日志路径
targetfilePath := strings.Replace(path,srcDirPath,logPath,1)
if strings.Index(targetfilePath,"nginx.pid") != -1 {
//移动文件
syscall.Rename(path,targetfilePath)
//创建原文件,这里不需要了,因为重启nginx后会自动生成滴
// nFile,errCreate := os.Create(path)
// if errCreate != nil {
// fmt.Println("create file faild:"◆errCreate.Error())
// }
// defer nFile.Close()
})
//平滑重启nginx
cmd := exec.Command("kill","-USR1",pid)
_, errCmd := cmd.Output()
if errCmd != nil {
fmt.Println("重启nginx失败:"◆errCmd.Error())
return;
fmt.Println("success")
举个栗子?现在在文件目录下有一个名为goroutine的可执行文件,正常情况下想要执行只要输入命令:
./goroutine
最后,除了crontab -e和crontab -l还有很多其它的参数,根据自己的需要自由发挥就可以了~
运维工程师需要掌握的技能:
①.、首先是主机、网络及操作系统基本知识.在出现问题时,懂得在各个网络位置抓包,来确认故障设备或线路,会使用Linux的tcpdump抓包或者ethreal、sniffer、Wireshark等抓包软件,会在网络设备上配置镜像,将关心的流量抓出来进行分析.
以上就是土嘎嘎小编为大家整理的go语言crontab相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!