How to restart ES from a script?
-
@TMNTturtlguy if your script wants to edit that file it will need to use
sudo
as user scripts are no longer run as root. -
@BuZz thanks that seems to work. New issue. When running
touch /tmp/es-restart pkill -f "/opt/retropie/supplementary/.*/emulationstation$"
the script works great, but when i press start and go to QUIT, the screen flashes back to my script and ES restarts. I can't navigate to exit or shutdown. I immediately see the script blue screen and restart ES. So this is not killing the /tmp/es-restart
-
you can please check permission of your
Restart Script
in retropiemenu.
It must be set to pi. -
@cyperghost another beginner questions, how do i check that?
-
@TMNTturtlguy
Because the sh und rp files are called via bash. I'm not 100% sure if this can cause errors. if you never entered SSH as root it's very unlikely you have the wrong permission set.Sorry late here
ls -al
in retropiemenue -
@cyperghost everything is set to pi
-
@TMNTturtlguy @cyperghost @BuZz so i can confirm that
touch /tmp/es-restart pkill -f "/opt/retropie/supplementary/.*/emulationstation$"
Is still not killing all 3 PID. I had to go in and kill, when i did this i got the same blue screen with error text as i posted above using @meleu script. I just tried running this with sudo in front, same effect. Once it is run, entering into the start menu and the retropie menu causes me to immediately flash to the script screen and then restart ES.
-
@TMNTturtlguy it's not supposed to kill all the processes - 2 are scripts to launch es which should be left running. Also see above regarding using ps so you can see the full names.
-
-
@BuZz @cyperghost when I killed 1162 from the above list, ES restated and now everything is functioning correctly. I then ran my script again, it worked, pressed start and went to menu, quit, and same thing occurs, a flash of my script menu and an restart of ES. This time i kill the highest number of ES, Es restarts and i get a message that /tmp/es-restart cannot be removed. Is this a permissions issue within the script? I am running the latest
touch
restart command from above with sudo now and it has no affect.Edit: i added tried this:
touch /tmp/es-restart pkill -f "/opt/retropie/supplementary/.*/emulationstation$" sudo rm /tmp/es-restart
This gets rid of the auto restart, but when I go to start, quit I can now select restart, when i do this it reruns the my script and defaults to the first option from my menu. I don't get the can't remove /tmp/es-restart message anymore. When i kill the largest number emulationstatio it exits to the same blue screen with weird text as posted above. The sudo rm /tmp/es-restart everything is back to normal again.
-
wazzup guys!
in front of my RetroPie it is a way easier! Here is my one liner to restart ES with no issues (at least it works fine here):
touch /tmp/es-restart && pkill -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)"
Yes, the only difference is those
/
chars before and after.*
in the regex. It's working fine thanks to this commit on RetroPie-Setup.That one liner is able to restart ES even if the user is running a testing ES branch ( @TMNTturtlguy knows what I'm saying) and/or the user launched ES with some
--arguments
.@TMNTturtlguy I hope it helps you.
Cheers!
-
@meleu thank you! Unfortunately we just left for a family weekend and I won't be home until Sunday evening. I will test it out right away. Thanks again! P.s. I brought my computer with to make your mame row logo! Will get that created and send you a download link!
-
I made a thread of all bash ideas oft the restart.
https://retropie.org.uk/forum/topic/11050/restart-es-via-bash-script/ -
@meleu why
"/opt/retropie/supplementary/.*/emulationstation([^.]|$)"
rather than"/opt/retropie/supplementary/.*/emulationstation$"
? A use case I have missed ? -
@BuZz yep. If the user launch emulationstation with some
--argument
the regex ending withemulationstation$
don't match. :-)Example:
emulationstation --debug
-
@meleu aha. Thanks. Didn't consider that.
-
@BuZz @meleu
Changes are registered to Restart ES via batch thread
added meleu as "slight" updaterThis was easy - wasn't it? EUREKA
For @TMNTturtlguy what the difference between mine and @BuZz @meleu script.
- They doing all the same: killing one specific process
but
The script of meleu and BuZz
specifies to kill allemulationstation
scripts which can found in path"/opt/retropie/supplementary/"
Mine just kills the latest call of any emulationstation call. That's the reason why I wrote ... Keep care of future updates of ES
The the kind of "specification" makes the difference.
Annother tipp for you: Every command has a help section ... just write
--help
as parameter
If the programman
is installed you can get more detailed help byman [command]
for ex.man ls
-
@cyperghost question for you,
I am currently running the main branch EmulationStation updated from source. I have however run several different builds of emulationstation for testing out new updates of ES. As I am now running the main branch as updated from the setup script shouldn't I be running form /opt/supplementary/ ? Are you suggesting that because I have run the test branches when the main install of ES is killed by @BuZz and @meleu command another instance of ES from another location runs?
-
The script of meleu and BuZz
specifies to kill allemulationstation
scripts which can found in path"/opt/retropie/supplementary/"
This is not true. My last solution above kills only the "real" ES binary. Only one process. And don't do anything with the scripts.
My solution is also able to kill/restart any of the ES mods we (I, @TMNTturtlguy and other guys) are testing. It's also able to kill emulationstation if it's launched with some
--argument
.I didn't analyze the solution proposed by @cyperghost to be able to give my opinion, but I'm pretty sure that my solution works pretty fine for what @TMNTturtlguy wants to do in the OP.
-
@meleu My friend this wasn`t to be intended as an offension. I wrote scripts but I ment binaries. As I wrote in my last posting..,,
- They doing all the same: killing one specific process
I know it works and it is very save for future ES version what mine is not because mine just kills the last PID of ES and may by coincidence is the right one in future version. I think that are the correct conclusions.
Just for understanding....
This RegEx expression excludes the DOT.
so no shell script would be killed.
But if a second instance as binary is named "emulationstation-newversion" then the expression would also be true.And if there are running two processes from two binaries in the path
/opt/retropie/supplementary/
....- emulationstation
- emulationstaten-debugging
then both will be killed or am I wrong?
I'm not very common with regex expressions ... still learning this but they are the holy grale for string processing.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.