4

I am running CentOS 7 with XFCE as my DE. I made a bash script, originally stored in ~/bin (I have since deleted it), which I wanted to have run automatically at startup. I somehow succeeded, but I have tried to remove it from my autostart programs, to no avail.

  • when I run ctrontab -e, I am given an empty file to edit. It is therefore not started through there.

  • when I open Session and Startup -> Application autostart, the only programs are: spice vdagent, tracker application miner, tracker metadata extractor, tracker user guides miner, XFCE polkit, Xfsettingsd, redshift, power manager, network.

  • when I find its PID and look through /proc/PID/, the exe is a link to /usr/bin/xfce4-terminal (note: the script started an xfce4-terminal and ran commands on it, then stayed open after printing its output). I don't know where else I could find useful information about what ran this program. cwd is a link to ~, root is a link to /, the rest are empty files pretty much.

  • the script is no longer in ~/bin, yet is somehow still being run

  • I also, at one point, installed devilspie2 to manage that terminal window, and messed around with it. I have since uninstalled it. I wouldn't expect it to have anything to do with it, but I figured I'd specify this.

where else could it be started from? How would I know?

6
  • 2
    Did you accidently save it to your session? Session and Startup->Session Commented Apr 17, 2017 at 13:43
  • 2
    Don't mean to be nit-picky, but crontab really isn't the place to do anything related to system startup activities. I get that you told us you checked there (which is good troubleshooting!), but with crontab in the title I wanted to be clear in case other readers come across this post.
    – 0xSheepdog
    Commented Apr 17, 2017 at 15:42
  • 1
    @0xSheepdog Good to know, but could you add why that is the case? Throughout searching on how to run scripts on reboot, I found a number of people recommending it: askubuntu.com/a/816/596765
    – Devilius
    Commented Apr 17, 2017 at 15:56
  • 1
    Wow, TIL... As the first comment on the AskUbuntu question suggests, the \@reboot is not well known. I had no idea it existed! =) So, presuming it is a fully supported feature, that might just be a good way to accomplish the task. Keep in mind that I was unaware of it -- as many others seem to be as well. If you want to do something in an "off the beaten path" manner, this is great. If you want a well known and established method (for ease of use by others), maybe consider init.d scripts or systemd services; both are well documented and known. YMMV. Thanks for teaching me something new!
    – 0xSheepdog
    Commented Apr 17, 2017 at 16:04
  • 1
    I personally have had @reboot not work for me correctly, it doesn't necessarily run at the end up startup sequence and therefore might not work as expected Commented Apr 18, 2017 at 22:08

1 Answer 1

3

If you are running systemd you can create a service that will start yourt software and then use systemctl enable [your-service] to start it on boot up. If your using openrc(old init) then you can use a similar method just use rc-update add [service] default

1
  • 1
    This is the preferred method! I used to use rc.local but it's no longer guaranteed to start after all services so might not work as expected. Commented Apr 17, 2017 at 17:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .