I am really not familiar with Linux, and only started using it recently, so be patient with me.
I am trying to control a camera on regular intervals through a script that is called upon in the crontab. When I start up the computer, I can open the crontab file, edit and save, and everything is executed correctly. So my script is fine. (btw, I use gedit as editor)
However, I can never open crontab a second time, unless I reboot the computer first.
This is what happens: I type crontab -e in terminal and I get a blank page. (Usually, crontab shows first a whole explanation as comments, after which you type your actual commands.) When I then type my commands and try to save the file (/tmp/crontab.something), I get the following message: could not find the file /tmp/crontqb.something/crontab. Please check that you typed the location correctly and try again.
After I then closed the file without saving, terminal says "no modification made", which is fair enough..
When I try: crontab -l, I do get the correct content of crontab in terminal.
I don't know if this is relevant, but when I try sudo crontab -e, I get " no crontab for root. Using an empty one. 888" But he doesn't open anything and I get no new input line in the terminal.
After I reboot the computer, crontab -e works fine again, but only once..
Any help is really appreciated!
Sarah
Related
this question is pretty fundamental but i didn't find the right words to google to find an answer
i want to start a presentation on a raspberry pi straight when it boots
So i tested the command to get it to open my presentation, i just used this command:
sudo libreoffice --impress --nolockcheck --nologo --norestore --show /home/pi/Desktop/Praesentation/1.pptx
that worked so i put that line into the autostart file at this path:
/etc/xdg/lxsession/LXDE-pi/autostart
That works fine but i found out that you should or can also use this command in the file:
#libreoffice --impress --nolockcheck --nologo --norestore --show /home/pi/Desktop/Praesentation/1.pptx
but running the command in the commandline with bash #libreoffice... does not work
What does the # mean?
I'm pretty sure you shouldn't be running LibreOffice as root (sudo). This will give it full rights to do anything on the system, which is not needed for an office application, and it might cause all sorts of trouble if it writes files owned by the wrong user.
The LXSession wiki explains what the # means:
autostart configuration file
This file stores the commands that will be executed at the beginning of the session. It is not a shell script, but each line represents a different command to be executed. If a line begins with #, the command following the # will be automatically re-executed if it crashes.
I have seen many ways to launch a script like putting it in profile.D, rc.local, or creating a auto start file but none of those launch the file in a visible window if at all. I need it to be in a visible window in Ubuntu. I need to do this because I am using several emulators to stream to different services, and I don't want to have to start the script on each manually.
I am using visual box for the emulator. The sh file is on a removable drive because it is an external file. I also need it to run as sudo.
Edit: I don't actually need it to run at startup. I just need to have the script run. I can probably just sleep really long for graphic to load.
Edit 2: So I created a service that launched a sh file in /usr/bin/ which was supposed to create a gnome-terminal window that ran my script. It ran, however It didn't create a visible window for some reason. I then tried to specify a display which caused gnome to freak out. Dbus was not launching correctly. another question stated that gnome would not work because of how it was designed and stated to use konsole instead. Konsole also stated that it could not connect to a display, giving a QXcbConnection error. Konsole does not have an option to specify display. I don't know what else to try
Edit 3: So I did the thing in the comment. And the service works. However it only works after I run the file that the service runs in usr/bin manually after every restart. The important parts of the file:
#!/bin/bash
sleep 60
ufw disable
ssh nateguana#$(hostname) -X
xhost +
*launch Gnome**only works after file ran manually*
I have also tried exporting DISPLAY, and changing users with su. I have not tried importing SSHD, as another question said to do, as I think that is only for non local connections. I have also tried every single arrangement of commands possible. Xhost errors stating that it is unable to open display "".
You can use gnome-terminal -e <command> to spawn a new bash terminal which runs the command.
You could use something like
gnome-terminal -e /path/to/bashfile
Bear in mind, this will end the terminal after the bash scipt is done executing.
To avoid this,in a newline add $SHELL to the end of your bash script.
PS: the -e argument is deprecated and might be removed in later versions
I know little about Vim in terminal(Mac) and the other day I was working copy and pasting text and i think I accidently did it when in terminal. Now whenever I open terminal it instantly loads on Vim Ex mode. I know how to quit Ex mode once in terminal but is there any way i can get rid of Vim loading when I open Terminal?
Thanks
Edit: To explain further to what i mean when I open terminal.app from Utilities I get the following
and the only way I get back to the command prompt is by typing quit every time I open terminal and i cant understand why the Vim process is running in the first place.
I was just outside the terminal in a document copy and pasting text then accidentally did a command v to paste within terminal which resulted in this happening.
It appears that you've accidentally updated one of your shell startup scripts so it launches vim.
If your default shell is csh or tcsh, take a look at .cshrc, .tcshrc, and .login in your home directory, and look for a command like vi -e or vim -e.
If your default shell is bash, check .bashrc and .bash_profile.
It may be easier to figure out which file you messed up by checking which file in your home directory was modified most recently:
% ls -altr $HOME | tail
-a lists all files, including files whose names start with ..
-l gives you a long listing, showing timestamps.
-t sorts by modification time.
-r reverses the order, so newer files are shown last
I have had several Debian servers and always edited cronjobs in this way:
crontab -e
and
Ctrl+x
Just got a new server and can not do it in this way anymore.
When I enter crontab -e, the file opens but I can't write anything. I can move cursor up and down but can't write. I even can not exit from this file because Ctr+x doesn't work.
When I open a file there is some information and the rest empty lines contain tildes ~ in the beginning of each line.
Any ideas how can I edit this file?
Thanks.
You need to turn on insert mode. After entering crontab -e, press i to turn on insert, enter your full line, press esc to finish entering, and then hold down shift and press z twice to save the file. This is how I managed to do it in vi/vim
As one other person has suggested, vim is obviously the default editor on your new server. You can test this by running
EDITOR=pico crontab -e
Substituting whatever is your actual preferred editor (sounds like it may be nano or pico). If that works, you should try one of the following:
edit your login script to set that environment variable on login (sets the editor just for that user)
Make sure your favourite editor is is installed and run the following (as root): update-alternatives --config sensible-editor
You can then choose the default editor for all users (they can override it individually by doing option 1).
~ would suggest that you are now editing your crontab using vi/vim instead of your usual editor
so Ctrl-X wont work, try Esc :wq
Do you have the right permissions? maybe you should open it as root user if not.
check it doing this:
ls -all $(which crontab)
if not you can change them..take a look here too..maybe you find something more!
hope it helps.
I'm having some problems working with my development environment. Specifically, after I invoke the screen utility from within Cygwin I lose the ability to do tab completion. Before I invoke screen however tab completion works just fine.
I messed around with setting different values for the TERM env variable (VT100, xterm etc) but without success. It must be something trivial but I have no idea anymore. Does StackOverflow have any suggestions for me?
when you issue 'screen' from inside cygwin it might put you in another shell like /bin/sh instead of /bin/bash (and bash is where you're getting the tab completion from).
To fix the problem you could edit your .screenrc file (found in your home directory) and add in this line:
shell bash
Then try running screen again and you should see tab completion work within this new window.
The problem is that bash needs to be run as a login shell in order to have tab completion in the default cygwin setup. If you run bash in a cygwin bash you won’t have tab completion either. To set screen to run bash in login mode, add this line to your ~/.screenrc file:
shell -bash
I had a similar problem with git autocompletion not working when using screen on a linux machine, but wasn't due to a different shell. I fixed it using this question: Git autocomplete in screen on mac os and doing the following:
Get the git autocompletion script
curl https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -OL
why would you want that hanging around?
mv git-completion.bash .git-completion.bash
add this line to your ./bashrc
source ~/.git-completion.bash
Then in your terminal
source ~/.bashrc
That worked for me.
(I imagine after three years you've probably solved your problem, but I hope this helps someone else)