Linux
- A Crude Latex Diff Script in Linux
- Installing PHP 5.2 on CentOS
- Setting up a Samba client on Ubuntu 12.04
- Citadel
- Ubuntu
- Why I switched back from Ubuntu to Windows 7
- UEFI
- Other pages tagged as “linux”
ln -s <target> <source> # create symbolic link
echo $? # print last return value int
tar -zcf out.tar.gz folder # compress folder to .tar.gz
tar xzf out.tar.gz folder # extract .tar.gz to folder
mogrify -format eps *.png # convert all *.png to *.eps
sh -x <script> # show all commands executed by given script for debug
df -h # show disk usage and free space
apt-mark hold jenkins # hold a package at the current version
If this fails, the version of tar may not support gzip compression. In this case, you can use the traditional two-stage command: gzip -dc filename.tar.gz | tar xf -
Commit directories to SVN individually
find . -maxdepth 1 -regex ./[A-Za-z0-9].+ -exec svn commit '{}' --message "Adding {} pictures folder to repository" ;
- “find .” matches all files and directories in the current directory
- “-maxdepth 1” only matches top-level directories
- “-regex ./[A-Za-z0-9].+” removes the ./ directory
- “-exec svn commit” runs “svn commit” with each result
- ”{}” is replaced with the result directory name
- ; is required to end the line
Also see http://www.pixelbeat.org/cmdline.html for a neat reference.
Joining multiple PDFs together
If they’re all the same size, you can use Ghostscript:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf
Misc Notes
./configure: line 23: syntax error near unexpected token `$'inr''
The configure file line endings has changed from Unix style to Windows style (probably winzip being stupid). To fix:
$ vim ./configure
:set ff=unix
:wq
Adding a New Sudo User
Create a new user:
root@server:~$ sudo adduser username
[sudo] password for root:
Adding user 'username' ...
Adding new group 'username' (1234) ...
Adding new user 'username' (1234) with group 'username' ...
Creating home directory '/home/username' ...
Copying files from '/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for username
Enter the new value, or press ENTER for the default
Full Name []: Your Name
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Add it to the admin user group (or adm
):
sudo usermod -a -G admin username
Or, define it as an explicit member of the admin group (or adm
group):
sudo usermod -g admin username
Or, define it explicitly as someone who can sudo (necessary on new Ubuntu releases):
sudo adduser username sudo
Alternatively, you could use visudo
, but be careful when editing the sudoers
file!
Chaining Greps when Tailing a File
If you are tailing a file and trying to execute multiple greps, you can’t just chain them using pipes:
tail -f /my/file.log | grep -v a | grep -v b | grep -v c
You need to add the flag `–line-buffered” to each grep.
tail -f /my/file.log | grep --line-buffered -v a | grep --line-buffered -v b | ...
spamd: still running as root, safe_lock: cannot create tmp lockfile /nonexistent/.spamassassin
If you have configured your site to use Spamassassain, and your /var/log/mail.log
includes messages such as:
spamd: still running as root: user not specified with -u, not found, or set to root, falling back to nobody
plugin: eval failed: bayes: (in learn) locker: safe_lock: cannot create tmp lockfile /nonexistent/.spamassassin/bayes.lock.my.domain.6304 for /nonexistent/.spamassassin/bayes.lock: No such file or directory
This is because spamassassin is not being run as a particular user, or is being run as root. According to /usr/share/doc/spamassassin/README.spamd
this is technically OK, but it’s easier just to create a new user for spamd to run as. Create a new user with adduser --system
, and then modify /etc/default/spamassassin
(designed to be edited on Ubuntu):
OPTIONS="--create-prefs --max-children 5 --helper-home-dir -u spamd"
Installing an X server to startup at boot
I tried installing a basic X server (called a “client”) using sudo apt-get install xauth
and sudo apt-get install xorg
(as recommended by Ubuntu). However I couldn’t get the X server to start at boot. I even tried creating a file /etc/init.d/xserver
with the single command exec startx
, but this didn’t do anything unless I executed the script as a user (no, I don’t know enough about init.d
yet).
The solution was to install a display manager such as Gnome’s. sudo apt-get install gdm
followed by a sudo shutdown -r now
, and now an X server was running at startup so I can do things like this:
DISPLAY=:0 sudo aticonfig --adapter=all --odgt
Compare two directories with files recursively
diff -rq dir1 dir2
Based off this article