[centOS] Automatisch sh bestandje starten bij boot

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
Hoi allemaal,

Ik heb al een hele nacht lopen kloten op het volgende probleem, maar kwam er niet uit; Ik heb een .sh bestand, met een java opdracht erin, die ik automatisch wil laten opstarten als de server opstart. Tot op heden is dat niet gelukt.
Ik heb het volgende geprobeerd:

1. in 'rc.local' het volgende toegevoegt "sh /home/marijn/server_nogui.sh"
2. het volgende script gemaakt, in init.d gezet, naar 777 chmod, en daarna chkconfig -add server
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh
# run server_nogui.sh at boot.
# chkconfig: - 90 10
# description: server_nogui - minecraft

case "$1" in
'start')
    /home/marijn/server_nogui.sh start
    ;;
'stop')
    ;;
*)
    echo "Usage: $0 { start | stop }"
    ;;
esac
exit 0

3. Nog andere dingen die sterk op de 2 leken, maar dan met andere commando's, en of kleine wijzigingen.

Ik heb er al zeker 3 uur op lopen kloten, maar kom er niet uit. Weet iemand wat ik fout doe?

Alvast bedankt,
Marijn

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

Mis je niet de runlevels in je chkconfig line? Die van mij ziet er zo uit
code:
1
2
3
4
#!/bin/sh
# <app> Init-Script
# chkconfig: 2345 80 05
# description: <app>

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
Heb ik ook geprobeerd, maar dat werkte helaas ook niet.

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • 0xDEADBEEF
  • Registratie: December 2003
  • Niet online
Disclaimer: * 0xDEADBEEF heeft geen kaas gegeten van CentOS.
Blue-cola schreef op maandag 13 december 2010 @ 12:26:
Hoi allemaal,

Ik heb al een hele nacht lopen kloten op het volgende probleem, maar kwam er niet uit; Ik heb een .sh bestand, met een java opdracht erin, die ik automatisch wil laten opstarten als de server opstart. Tot op heden is dat niet gelukt.
Ik heb het volgende geprobeerd:

1. in 'rc.local' het volgende toegevoegt "sh /home/marijn/server_nogui.sh"
Maak daar eens van, in rc.local:
code:
1
sh /home/marijn/server_nogui.sh start
2. het volgende script gemaakt, in init.d gezet, naar 777 chmod, en daarna chkconfig -add server
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh
# run server_nogui.sh at boot.
# chkconfig: - 90 10
# description: server_nogui - minecraft

case "$1" in
'start')
    /home/marijn/server_nogui.sh start
    ;;
'stop')
    ;;
*)
    echo "Usage: $0 { start | stop }"
    ;;
esac
exit 0

3. Nog andere dingen die sterk op de 2 leken, maar dan met andere commando's, en of kleine wijzigingen.

Ik heb er al zeker 3 uur op lopen kloten, maar kom er niet uit. Weet iemand wat ik fout doe?

Alvast bedankt,
Marijn
Ik heb de indruk dat je nu met een tussen-script je eigenlijke script (het script wat minecraft start) uitvoert.

"Religion is an insult to human dignity. With or without it you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." - Steven Weinberg


Acties:
  • 0 Henk 'm!

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 02-10 16:23
wat zijn de rechten die op het bestandje in je home dir staat (slecht id btw scripts in home dirs)
als niemand dat kan executen dan kun je het laten opstarten via waar dan ook maar gaat het niet werken

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 13:38

deadinspace

The what goes where now?

Waarom doe je dat?

Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
0xDEADBEEF schreef op maandag 13 december 2010 @ 13:08:
Disclaimer: * 0xDEADBEEF heeft geen kaas gegeten van CentOS.

[...]

Maak daar eens van, in rc.local:
code:
1
sh /home/marijn/server_nogui.sh start
Werkt niet.
[...]

Ik heb de indruk dat je nu met een tussen-script je eigenlijke script (het script wat minecraft start) uitvoert.
Dat was ook de bedoeling (: ,, ik dacht dat het misschien dan wel zou werken
lordgandalf schreef op maandag 13 december 2010 @ 13:09:
wat zijn de rechten die op het bestandje in je home dir staat (slecht id btw scripts in home dirs)
als niemand dat kan executen dan kun je het laten opstarten via waar dan ook maar gaat het niet werken
777
dan weet ik 100% zeker dat het niet aan de rechten ligt, als alles werkt, verander ik dat terug naar wat het moet zijn (755 bijv.)

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • pkwarts
  • Registratie: April 2008
  • Laatst online: 28-08 11:26

pkwarts

555433800

Dit voegt vrij weinig toe aan een oplossing, maar er is een mooie directory voor je eigen scripts: /usr/local/bin
Als je je script hier inzet, wordt het automatisch een command die je op de commandline overal kan aanroepen :)
Vervolgens kan je in rc.local makkelijk alleen de naam van je script neerzetten (plus uiteraard 'start')

P.S. Het script zelf uitvoeren lukt wel gewoon?

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Maak een crontab, dan draait hij ook meteen onder je useraccount, ipv root:

code:
1
@reboot  /home/marijn/server_nogui.sh start

Acties:
  • 0 Henk 'm!

  • Speedfightserv
  • Registratie: September 2004
  • Laatst online: 19:50
je environment variables worden niet geladen. dus hij heeft ook geen java home path etc.
open je .bash_profile uit je home folder en kopieer de environment variables uit dat profiel en plaats die vooraan in het script

30 x Trina 390wp Op SE en Solis. | MHI 3,5kw


Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Blue-cola schreef op maandag 13 december 2010 @ 12:26:
1. in 'rc.local' het volgende toegevoegt "sh /home/marijn/server_nogui.sh"
2. het volgende script gemaakt, in init.d gezet, naar 777 chmod, en daarna chkconfig -add server
code:
1
2
3
4
#!/bin/sh
# run server_nogui.sh at boot.
# chkconfig: - 90 10
# description: server_nogui - minecraft
Als je dit in rc.local zet, moet je niet chkconfig server gaan doen. Daarnaast moet je na een add ook nog chkconfig <service> on doen.

Probeer je script eens in /etc/init.d te zetten en dan met
code:
1
chkconfig server_nogui.sh on
het script zover te krijgen te starten.

Daarnaast ben ik geen fan van een script wat een script aanroept, maar dat moet je zelf weten. Ik zou "gewoon" in de start functie je script plakken, en een "fatsoenlijke" stop maken, bijvoorbeeld met een
code:
1
kill -SIGQUIT `pidof minecraft
ofzo.

Ook een "status" aanroep is vrij standaard, ook al is dit niet vereist.

De "sh" voor je script is ook niet nodig / nuttig, zorg er gewoon voor dat je +x hebt en een goede shebang.

*edit: bedenk me net nog een leuke; staat SELinux nog aan? Goede kans dat scriptjes uit een homedir (user_home_t) niet uitgevoerd mogen worden door init_t.

[ Voor 6% gewijzigd door Rainmaker op 13-12-2010 17:40 ]

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
pkwarts schreef op maandag 13 december 2010 @ 15:50:
Dit voegt vrij weinig toe aan een oplossing, maar er is een mooie directory voor je eigen scripts: /usr/local/bin
Als je je script hier inzet, wordt het automatisch een command die je op de commandline overal kan aanroepen :)
Vervolgens kan je in rc.local makkelijk alleen de naam van je script neerzetten (plus uiteraard 'start')

P.S. Het script zelf uitvoeren lukt wel gewoon?
Werkt niet, script zelf werkt wel als ik nu gewoon server_nogui zeg.
Tim schreef op maandag 13 december 2010 @ 16:50:
Maak een crontab, dan draait hij ook meteen onder je useraccount, ipv root:

code:
1
@reboot  /home/marijn/server_nogui.sh start
Werkt niet.
Speedfightserv schreef op maandag 13 december 2010 @ 16:55:
je environment variables worden niet geladen. dus hij heeft ook geen java home path etc.
open je .bash_profile uit je home folder en kopieer de environment variables uit dat profiel en plaats die vooraan in het script
Hier heb ik meer over geleze, maar kom er niet uit. In mijn home map staat geen .bash_profile, ook niet in de map marijn
Rainmaker schreef op maandag 13 december 2010 @ 17:34:
[...]


Als je dit in rc.local zet, moet je niet chkconfig server gaan doen. Daarnaast moet je na een add ook nog chkconfig <service> on doen.

Probeer je script eens in /etc/init.d te zetten en dan met
code:
1
chkconfig server_nogui.sh on
het script zover te krijgen te starten.

Daarnaast ben ik geen fan van een script wat een script aanroept, maar dat moet je zelf weten. Ik zou "gewoon" in de start functie je script plakken, en een "fatsoenlijke" stop maken, bijvoorbeeld met een
code:
1
kill -SIGQUIT `pidof minecraft
ofzo.

Ook een "status" aanroep is vrij standaard, ook al is dit niet vereist.

De "sh" voor je script is ook niet nodig / nuttig, zorg er gewoon voor dat je +x hebt en een goede shebang.

*edit: bedenk me net nog een leuke; staat SELinux nog aan? Goede kans dat scriptjes uit een homedir (user_home_t) niet uitgevoerd mogen worden door init_t.
Dat chkconfig server on werkt niet. Doet niks meer of minder.

Ik moet bekennen dat mijn linux kennis slecht is, en dat ik er daarom aan begonnen ben. SELinux zegt me niks, dus het zal ongetwijfeld aan staan. Hoe zet ik het uit?

EDIT: na wat googlen kwam ik uit op /etc/selinux/ << deze map bestaat echter niet bij mij. Wel de map /selinux/ maar die is behoorlijk leeg.

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 21:14

AW_Bos

Liefhebber van nostalgie... 🕰️

Ik heb Blue-cola omdat ik hem ken op even op MSN even geholpen, en d.m.v.
which selinux
lijkt het erop dat SELinux niet het probleem is, gezien deze No SElinux uitspuugt.

Als hij niet geïnstalleerd is, is die map behoorlijk leeg.

[ Voor 21% gewijzigd door AW_Bos op 13-12-2010 19:03 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
Aangezien er meer dingen ontbraken op mijn server, zoals VIM, lijkt het er op dat t gewoon een slechte installatie was. Ik heb een herinstallatie verzoek gedaan bij directVPS, en wacht nu even af.

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • Speedfightserv
  • Registratie: September 2004
  • Laatst online: 19:50
Blue-cola schreef op maandag 13 december 2010 @ 18:52:
[...]

Hier heb ik meer over geleze, maar kom er niet uit. In mijn home map staat geen .bash_profile, ook niet in de map marijn

[...]
Klopt het is een hidden bestand, voer het volgende uit in /home/marijn/ :
code:
1
ls -al


of voer in je /home/marijn/ folder uit:
code:
1
vi .bash_profile


Succes

[ Voor 3% gewijzigd door Speedfightserv op 14-12-2010 09:52 ]

30 x Trina 390wp Op SE en Solis. | MHI 3,5kw


Acties:
  • 0 Henk 'm!

  • tsjoender
  • Registratie: April 2005
  • Laatst online: 03-10 16:34
Als je het al een soort service wil draaien dan zou je het script aan kunnen maken als: /etc/rc.d/init.d/minecraft:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh
#
# chkconfig:    2345 91 11
# description:  Minecraft:      Beschrijving van Minecraft
#

# Source function library.
. /etc/rc.d/init.d/functions

start()
{
        echo -n $"Starting Minecraft: "
        su - marijn -c "~/server_nogui.sh start > /dev/null 2>&1"
        RETVAL=$?
        if [ ${RETVAL} = 0 ]; then echo_success
                else echo_failure
        fi
        echo
}

stop()
{
        echo -n $"Stopping Minecraft: "
        su - marijn -c "~/server_nogui.sh stop > /dev/null 2>&1"
        RETVAL=$?
        if [ ${RETVAL} = 0 ]; then echo_success
                else echo_failure
        fi
        echo
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload}"
        exit 1
esac

exit 0


Eigenlijk horen start en stop dingen niet in een user's homedir, maar het werkt natuurlijk wel. Zorg ervoor dat bovenstaand script in ieder geval executable is voor root (chmod 755 /etc/rc.d/init.d/minecraft). Met het commando chkconfig --add minecraft moet het toegevoegd worden aan de items die opgestart worden en zie je het in de lijst met services voorbij komen tijdens het opstarten. Het stukje "su - marijn" in het script zorgt ervoor dat het server_nogui.sh script als de gebruiker marijn gestart wordt en met diens omgevingsvariabelen.

Acties:
  • 0 Henk 'm!

  • pkwarts
  • Registratie: April 2008
  • Laatst online: 28-08 11:26

pkwarts

555433800

AW_Bos schreef op maandag 13 december 2010 @ 19:01:
Ik heb Blue-cola omdat ik hem ken op even op MSN even geholpen, en d.m.v.
which selinux
lijkt het erop dat SELinux niet het probleem is, gezien deze No SElinux uitspuugt.

Als hij niet geïnstalleerd is, is die map behoorlijk leeg.
which zoekt het volledige pad op van een shell command. Er is geen shell command die 'selinux' heet, dus die zal altijd no selinux uitspugen. 'rpm -qa | grep selinux' (rpm -qa = query all installed packages) is duidelijker.

[ Voor 3% gewijzigd door pkwarts op 14-12-2010 11:50 ]


Acties:
  • 0 Henk 'm!

  • tsjoender
  • Registratie: April 2005
  • Laatst online: 03-10 16:34
Onder CentOS 5 heb je ook "selinuxenabled". Deze geeft geen output, maar wel een exit code van 0 als SELinux enabled is of een 1 als het niet enabled is. Voorbeeldje op een systeem waar het uitstaat:

code:
1
2
3
4
[root@centos5 ~]# selinuxenabled
[root@centos5 ~]# echo $?
1
[root@centos5 ~]#

Acties:
  • 0 Henk 'm!

  • pkwarts
  • Registratie: April 2008
  • Laatst online: 28-08 11:26

pkwarts

555433800

tsjoender schreef op dinsdag 14 december 2010 @ 11:53:
Onder CentOS 5 heb je ook "selinuxenabled". Deze geeft geen output, maar wel een exit code van 0 als SELinux enabled is of een 1 als het niet enabled is. Voorbeeldje op een systeem waar het uitstaat:

code:
1
2
3
4
[root@centos5 ~]# selinuxenabled
[root@centos5 ~]# echo $?
1
[root@centos5 ~]#
Dat is nog wel de mooiste oplossing :)

Acties:
  • 0 Henk 'm!

  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
tsjoender schreef op dinsdag 14 december 2010 @ 11:53:
Onder CentOS 5 heb je ook "selinuxenabled". Deze geeft geen output, maar wel een exit code van 0 als SELinux enabled is of een 1 als het niet enabled is. Voorbeeldje op een systeem waar het uitstaat:

code:
1
2
3
4
[root@centos5 ~]# selinuxenabled
[root@centos5 ~]# echo $?
1
[root@centos5 ~]#
Kan altijd netter:
code:
1
2
[root@dbs-mta-01 ~]# sestatus
SELinux status:                 disabled


Edit: en zoals de rest al zegt: Of je maakt een /etc/rc.local regeltje, OF je maakt een init.d script. Laatste is natuurlijk het netste, en maakt het het makkelijkst om even de service te starten en te stoppen. Zoiets als wat tsjoender post..

[ Voor 18% gewijzigd door axis op 14-12-2010 11:59 ]

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Is er nergens een foutmelding in een logfile te vinden? Je kan wel een heleboel oplossingen gaan proberen, maar zolang er geen duidelijkheid is waarom je daemon niet opstart, blijft het bij trial and error.
Volgens mij worden meldingen van init.d-scripts naar de syslog gestuurd, dus kijk eerst eens in /var/log/messages en /var/log/syslog (zo heten ze in Debian, misschien is de locatie bij centOS ergens anders).
Anders kun je aan het begin van je init.d-script (onder de #!/bin/sh-regel) het volgende opnemen:
Bash:
1
2
exec >/een/of/andere/logfile 2>&1
set -x

Dit zorgt ervoor dat alle output naar stdout en stderr in de genoemde logfile terecht komt en dat ieder commando wordt geëchood voordat het wordt uitgevoerd.
Wel alle andere redirects naar /dev/null verwijderen, anders zie je nog niks.

Acties:
  • 0 Henk 'm!

  • BlueCola
  • Registratie: November 2006
  • Laatst online: 26-09 02:11
Mijn server is geherinstalled, dit keer helemaal compleet.

sestatus
SELinux status:                 disabled


SELinux is dus niet het probleem.

Ik zal nu nogmaal een scriptje maken bij init.d, met de regen van Sam erin. Daarna zal ik de logs plaatsen.

And that's how one and one makes three.


Acties:
  • 0 Henk 'm!

  • Speedfightserv
  • Registratie: September 2004
  • Laatst online: 19:50
vergeet ook het volgende niet!
Blue-cola schreef op maandag 13 december 2010 @ 18:52:
[...]

Hier heb ik meer over geleze, maar kom er niet uit. In mijn home map staat geen .bash_profile, ook niet in de map marijn

[...]
Klopt het is een hidden bestand, voer het volgende uit in /home/marijn/ :
code:
1
ls -al


of voer in je /home/marijn/ folder uit:
code:
1
vi .bash_profile


Succes

30 x Trina 390wp Op SE en Solis. | MHI 3,5kw


Acties:
  • 0 Henk 'm!

  • pkwarts
  • Registratie: April 2008
  • Laatst online: 28-08 11:26

pkwarts

555433800

Vergeet ook SELinux niet weer op enabled te zetten, het is er voor een reden ;) Je kan het desnoods op permissive zetten, dan zal het nog steeds niks tegenhouden, maar je ziet in ieder geval in je logs wanneer SELinux dat wel gedaan zou hebben.
Pagina: 1