Can Gambas be used to write a system service?
Posted
#1
(In Topic #1105)
Enthusiast

I am wanting to know if we can write a system service in gambas? What restrictions are there? I assume we can't put in a GUI for it.
Posted
Regular

Posted
Enthusiast

Posted
Regular

Code
' Gambas class file
''NEEDS gb.form.terminal
Public TermCmd As String
Public CmdNum As Integer
TerminalView1 As TerminalView
pProcess As Process
Timer1 As Timer
HBox1 As HBox
Public Sub Form_Open()
Setup
pProcess = TerminalView1.Exec(["bash"])
End
Public Sub Timer1_Timer()
If pProcess Then
If pProcess.State = Process.Stopped Then
Timer1.Stop
If CmdNum = 1 Then
Message("Bash Command Has Completed!", " OK ")
Endif
pProcess = TerminalView1.Exec(["bash"])
TerminalView1.SetFocus
End If
Endif
Catch
Message.Info(Error.Text)
End
Public Sub Setup() 'This just sets up the Form and its components
With Me
.H = 480
.W = 640
.Padding = 5
.Arrangement = Arrange.Vertical
End With
With HBox1 = New HBox(Me)
.Expand = True
.Padding = 5
End With
'Setup TerminaqlView
With TerminalView1 = New TerminalView(HBox1)
.Expand = True
.Blink = True
.Background = Color.black
.Foreground = Color.green
End With
With Timer1 = New Timer As "Timer1"
.Enabled = True
.Delay = 250
End With
Me.Center
End
Public Sub mnuClear_Click()
TermCmd = "clear"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub Form_Close()
Quit
End
Public Sub mnuClose_Click()
Quit 0
End
Public Sub mnuCleanCache_Click()
TermCmd = "sudo paccache -ruk0"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub CheckOrphans_Click()
TermCmd = "pacman -Qtdq"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuOrphansRemove_Click()
TermCmd = "sudo pacman -Rns $(pacman -Qtdq)"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub MtBu_Click()
TermCmd = "cp -avr /home/cage/.minetest/ /mnt/Secondary/Minetest_Backup"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuUdate_Click()
TermCmd = "yay -Syu"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuCheckConfigSize_Click()
TermCmd = "sudo du -sh ~/.cache/"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuClearConfig_Click()
TermCmd = "rm -rf ~/.cache/*"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mmnUpdateCheck_Click()
TermCmd = "checkupdates + aur"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuRankMirrors_Click()
TermCmd = "sudo reflector --protocol https --verbose --latest 25 --sort rate --save /etc/pacman.d/mirrorlist "
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Public Sub mnuRankEOS_Click()
TermCmd = "sudo eos-rankmirrors --verbose"
Timer1.Start
TerminalView1.Input(TermCmd & ";\n")
End
Hope it helps you out.
Posted
Enthusiast

so you can take that program and do systemctl enable {progname} and have it run as a system service?
Posted
Guru

I don't think gambas does it for you but I'm sure a system service could be a gambas application.
Application.Daemon might interest you but I'm not sure it's relevant to a system service or not? lol.
/comp/gb/application/daemon - Gambas Documentation
Posted
Enthusiast

[root@localhost bin]# journalctl -xe
░░
░░ The job identifier is 7356.
Oct 04 16:00:13 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=LCARS comm="systemd" exe="/usr/lib>
Oct 04 16:00:13 localhost.localdomain gbr3[18574]: cannot open display:
Oct 04 16:00:13 localhost.localdomain systemd[1]: LCARS.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: systemd-devel Info Page
░░
░░ An ExecStart= process belonging to unit LCARS.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Oct 04 16:00:13 localhost.localdomain systemd[1]: LCARS.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: systemd-devel Info Page
░░
░░ The unit LCARS.service has entered the 'failed' state with result 'exit-code'.
Oct 04 16:00:13 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=LCARS comm="systemd" exe="/usr/lib/>
Oct 04 16:01:01 localhost.localdomain CROND[18586]: (root) CMD (run-parts /etc/cron.hourly)
Oct 04 16:01:01 localhost.localdomain run-parts[18589]: (/etc/cron.hourly) starting 0anacron
Oct 04 16:01:01 localhost.localdomain run-parts[18595]: (/etc/cron.hourly) finished 0anacron
Oct 04 16:01:01 localhost.localdomain CROND[18585]: (root) CMDEND (run-parts /etc/cron.hourly)
1 guest and 0 members have just viewed this.


