ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## Go安装 ### 安装Go环境 > 提示: 版本需要 go version go1.13.6,运行go mod tidy,报1.10.x版本错误 > Golang官网下载地址:https://golang.org/dl/ 1. 打开官网下载地址选择对应的系统版本, 复制下载链接 这里我选择的是 ``` go1.13.6.linux-amd64.tar.gz: https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz ``` 2. cd进入你用来存放安装包的目录。直接输入cd ~。 然后执行 ``` wget https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz ``` 3. 下载完成 4. 执行tar解压到/usr/loacl目录下,得到go文件夹 ``` tar -C /usr/local -zxvf go1.13.6.linux-amd64.tar.gz ``` 5. 添加/usr/loacl/go/bin目录到PATH变量中。 添加到/etc/profile 或$HOME/.profile都可以`vim /etc/profile` GOROOT 在最后一行添加GOROOT自定义后需要在下面添加三个文件 GOPATH=$HOME/gocode ``` export GOROOT=/usr/local/go export GOPATH=/home/hadoop/golang export PATH=$PATH:$GOROOT/bin ``` wq保存退出后source一下 `source /etc/profile` 6. 执行go version,如果现实版本号,则Go环境安装成功。 ``` [root@boss helloworld]# go version go version go1.13.6 linux/amd64 ``` 7. 创建工作空间 > 注意事项:Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录: src 目录包含Go的源文件,它们被组织成 包 (每个目录都对应一个包), pkg 目录包含 包 编译后生成的库文件, bin 目录包含 包 编译后生成可执行程序。 可在合适的位置创建工作空间和子目录,实例如下: ``` mkdir -p /home/hadoop/golang/src mkdir -p /home/hadoop/golang/pkg mkdir -p /home/hadoop/golang/bin ``` 或者 ``` $ cd /home/hadoop/golang/ $ mkdir src pkg bin ``` ### 运行第一个程序 cd /home/hadoop/golang/src ``` mkdir helloworld cd helloworld/ # 第一个入口,main和java类似 touch main.go ``` 编写一个脚本,保存 ``` package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` 执行文件helloworld,输出:Hello, World! ``` [hadoop@boss02 helloworld]$ go run main.go Hello, World! ``` > 注意事项:采用 go build 进行编译,根据不同环境产生不同执行文件, > 其中account中特别之处,在以拉取依赖,采用 go mod tidy。 > 由于网络下载开源依赖需要下载全,才可以进行 go build 进行打包 执行:./account & > 细节硬核:修改配置还是代码,都要从新构建运行,不然无法生效。 ### 卸载 Go 卸载Go,其实就是将前面安装Go的东西全部删除: 删除 go 目录: ``` sudo rm -rf /usr/local/go ``` 删除软链接: ``` sudo rm -rf /usr/bin/go ``` ### 通用脚本扩展 #### 1. 启动脚本: 脚本:1startAccount ``` # ps -ef | grep account # 关闭kill -9 id nohup ./account.wll & ``` #### 2. 其他脚本: 关于关闭、进程查看、日志查看 脚本:2stopAccount ```sh #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 #====================================================================== # 通用脚本编写,项目启动shell脚本 # go目录: golang包 # log/account.log: 记录启动日志 # log/back目录: 项目运行日志备份目录 # nohup后台运行 # # author: lucky # date: 2020-02-05 #====================================================================== # 项目名称 APPLICATION="account.wll" APP_PATH="/root/account" APP_LOG="/root/account/log/account.log" # bin目录绝对路径 BIN_PATH=$(cd `dirname $0`; pwd) # 进入bin目录 cd `dirname $0` # 返回到上一级项目根目录路径 cd .. # 打印项目根目录绝对路径 # `pwd` 执行系统命令并获得结果 BASE_PATH=`pwd` # 项目日志输出绝对路径 LOG_FILE="${APPLICATION}.log" LOG_PATH="${APP_PATH}/${LOG_FILE}" # 日志文件夹不存在则自动创建 if [ ! -d "${LOG_PATH}" ];then mkdir ${LOG_PATH} fi GOT_PATH=${BASE_PATH} APP_NAME=${APPLICATION} LOG_NAME=${APP_LOG} cd ${GOT_PATH} cd ${APP_PATH} # 使用说明,用来提示输入参数 usage() { echo "Usage: sh 执行脚本.sh [stop|restart|status|logs|proc]" exit 1 } # 检查程序是否在运行 is_exist(){ # ps -ef |grep account.wll |grep -v "grep"|awk '{print $2}' pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` # 如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } # shell中的函数 # 启动方法 start(){ is_exist() if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else # 后台运行 nohup ./account.wll & fi } # 停止方法 stop(){ is_exist if [ $? -eq "0" ]; then echo kill $pid kill -9 $pid echo "${APP_NAME} killed" else echo "${APP_NAME} is already stopped" fi } # 输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is not running." fi } #重启 restart(){ stop start } #重启 logs(){ tail -f $LOG_NAME } # 查看进程 proc(){ pid=`ps -ef|grep $APP_NAME | grep -v grep|awk '{print $2}' ` # 如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then echo "${APP_NAME} Process number ${pid}." else echo "${APP_NAME} Process number ${pid}." fi } # 根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in #"start") # start # ;; "stop") stop ;; "status") status ;; "restart") restart ;; "logs") logs ;; "proc") proc ;; *) usage ;; esac ```