1 (2016-10-16 12:36:08 отредактировано XliN)

Golang хороший язык программирования. Простой для усвоения и изучения для новичков и системных администраторов. Его можно использовать в качесве замены bash.

Вот пример программы для перезапуска сервиса через веб морду. У меня знакомый хостится на моем сервере и ему надо иногда перезапускать tomcat.

package main                                                                                                                                         
                                                                                                                                                     
import (                                                                                                                                             
        "fmt"
        "html/template"
        "net/http"
        "os/exec"
)

func index(w http.ResponseWriter, r *http.Request) {
        // Загружаем шаблон html сайта полностью
        t, _ := template.ParseFiles("index.html")
        t.Execute(w, nil)
        // Получаем PID tomcat 8
        cmd, err := exec.Command("/bin/bash", "-c", "pgrep -l java | awk '{print$1}'").Output()
        if err != nil {
                fmt.Fprintln(w, "Error: ", err)
        }
        fmt.Fprintf(w, "Номер процесса Tomcat: %s", cmd)
}

func rebootTomcat(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-type", "text/html")
        // fmt.Println("method:", r.Method)

        // Перезапускаем tomcat 8
        cmd, err := exec.Command("/bin/bash", "-c", "tomcatdown && tomcatup").Output()
        if err != nil {
                fmt.Fprintln(w, "Error: ", err)
        }
        fmt.Fprintf(w, " %s", cmd)
        // Выводим новый PID процесса после Перезапуска
        newcmd, err := exec.Command("/bin/bash", "-c", "pgrep -l java | awk '{print$1}'").Output()
        if err != nil {
                fmt.Fprintln(w, "Error: ", err)
        }
        fmt.Fprintf(w, "New Tomcat PID: %s", newcmd)
}

func main() {
        http.HandleFunc("/", index)
        http.HandleFunc("/reboot", rebootTomcat)
        http.ListenAndServe(":8989", nil)
}

Программа поднимает вебсервер на порту 8989 и доступна через браузер. Если выпячивать его на ружу, то можно через простое проксирование в Apache, nginx.
Кстати... После компиляции программа собирается в один файл и не зависит ни от каких библиотек. Т.е. получается очень кросплатформенная.

Можно для нее написать init скрипт или systemctrl юнит.

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================
Спасибо сказали: TopE1

2

XliN⇓ пишет:

Golang хороший язык программирования. Простой для усвоения и изучения для новичков и системных администраторов. Его можно использовать в качесве замены bash.

Go (именно так, а не Golang, Golang это реализация) действительно хороший язык, и, главное, очень новый - первые реализации относятся к 2009 году.
Но говорить что он простой - это явный перебор: Go - это прямой наследник линии C/C++, чисто компилируемый язык (которых осталось на сегодня крайней мало).
Использовать его для написания скриптов - это одна из его побочных возможностей.

3

XliN пишет:

Кстати... После компиляции программа собирается в один файл и не зависит ни от каких библиотек. Т.е. получается очень кросплатформенная.

Собираться Go программы могут как статически, так и с использованием разделяемых библиотек (DLL), что в Linux и удобнее.
Go действительно весьма кроссплатформенный язык ... хотя бы потому, что разрабатывался он по следам реализации для операционной системы Plan 9. Но эта кроссплатформенность - не на уровне переноса скомпилированного бинарного кода (из этого ничего не получится), а в смысле переносимости исходного кода и компиляции на новом месте.

4 (2016-10-16 16:37:44 отредактировано Olej)

Могу предложить в качестве достаточно обстоятельного введения в Go: Go конспект.

А для любых желающих пообсуждать конкретные коды Go - вот здесь:
Инструменты Go
Примеры кода Go

5

XliN пишет:

Golang хороший язык программирования.

Кстати, кроме реализации GoLang для языка Go есть реализация внутри проекта GCC, которая доступна в большинстве дистрибутивов Linux:

[olej@dell C]$ which gccgo
/usr/bin/gccgo
[olej@dell C]$ gccgo --version
gccgo (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая 
коммерческую ценность и применимость для каких-либо целей.

Узнаёте? ;-)

6

Olej⇓ пишет:

Go (именно так, а не Golang, Golang это реализация)

Можно называть и так и так. По крайней мере в поисковиках надо искать именно go lang, т.к. по go ничерта не найдется. Даже сами разрабы писали )))

Olej⇓ пишет:

а в смысле переносимости исходного кода и компиляции на новом месте.

Да, именно так. Пиликаю дома на линуксе, а доделываю иногда на работе под винду ))

Olej⇓ пишет:

Использовать его для написания скриптов - это одна из его побочных возможностей.

Тут спорить даже не надо. Язык универсален. Например в последний год появились фреймворки для веб разработки... Язык живет и это отлично.

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

7

Подведены итоги 2016-го года:
TIOBE Index for January 2017

January Headline: Google's Go is TIOBE's programming language of 2016
TIOBE rewards the programming language that has gained the most popularity in a year with the programming language of the year award. Without hardly any competition Go has won the award for 2016. Google's Go language won 2.16% in one year. Runner ups Dart (+0.95%) and Perl (+0.91%) follow at a considerable distance. The main drivers behind Go's success are its ease of learning and pragmatic nature. It is not about theoretical concepts such as virtual inheritance and monads but about hands-on experience. Apart from that Go has built-in support for concurrency programming. More and more customers of our company TIOBE are adopting Go in an industrial setting. That is a good indicator.

TIOBE награждает язык программирования, который приобрел наибольшую популярность за год (по динамике). Практически без конкуренции Go завоевал награду на 2016 год. Язык от Google вырос за один год на 2.16%. Идущие следом Dart (+0.95%) и Perl (+0.91%) следуют на значительном расстоянии. Основными факторами успеха Go являются его легкость изучения и прагматический характер. Речь идет не о теоретических понятиях, таких как виртуальное наследование или монады, а про практический опыт. Кроме этого Go имеет встроенную поддержку параллельного программирования. Все больше и больше клиентов компании TIOBE адаптируют Go к промышленным условиям. Что является очень хорошим показателем.

8

Я в него верю.

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

9

XliN⇓ пишет:

Golang хороший язык программирования. Простой для усвоения и изучения для новичков и системных администраторов.

Подсказать можете ссылку на обучающую литературу для новичков?

Проще погасить свет чем разогнать тьму!

10

sevo44, https://forum.mageia.org.ru/viewtopic.php?id=1249
Много документации, но в основном на буржуйском.

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

11

sevo44 пишет:
XliN⇓ пишет:

Golang хороший язык программирования. Простой для усвоения и изучения для новичков и системных администраторов.

Подсказать можете ссылку на обучающую литературу для новичков?

Выше было:

Olej пишет:

Могу предложить в качестве достаточно обстоятельного введения в Go: Go конспект.

Тем более, что 2 дня назад там обновление:

Номер последней редакции: 1.41
Объём (страниц): 124
Размер файла текста: 601704
Размер архива кодов: 120492
Дата редактирования: 07 октября 2016

12

XliN пишет:

sevo44, https://forum.mageia.org.ru/viewtopic.php?id=1249
Много документации, но в основном на буржуйском.

Ещё больше - здесь:  Инструменты Go.

Но!
К писанине относительно Go, и на русском и на английском, нужно относиться очень осторожно (к качеству): из-за взрывной моды на Go о языке пишут "авторы", кто всерьёз в жизни не занимался разработкой программного кода вообще ... пЫдагоги ВУЗ-овские.