Linux
PATH
PATH is the environment variable containing a set of directories that should be searched for programs
#print user PATH $ printenv PATH /bin:/sbin:/usr/bin:/usr/sbin $ echo "$PATH" /bin:/sbin:/usr/bin:/usr/sbin #How it works $ ping 127.0.0.1 PATH=/bin:/sbin:/usr/bin:/usr/sbin │ │ │ ╰──▶ /sbin/ping ? found! ╰──▶ /bin/ping ? not found. #Add a folder to path for current shell session $ PATH=$PATH:/path/to/app/folder
Local installs of binaries and PATH correction
Install the binary
There is debate as to where binaries that you install yourself should be put in the filesystem. The proper places to put them seem to be :
/opt/ <- for bundled applications, typically grabbed from a software developper /usr/local/ <- for applications built by the administrator for local use, i.e. using "make" or other /home/USER/opt/ <- for single-user use only
Add it to the user's PATH
Include the following line in /home/USER/.profile :
EXPORT PATH="/path/to/bin/folder:$PATH"
This will only be active after logging out. If you want to activate it without logging out for a current shell session run the following command :
$ source /home/USER/.profile
Note that the path must point to the folder containing the binary and not to the binary itself.
Add it to cinnammon start menu
Cinnammon has implemented a handy GUI Editor you can access by right-clicking the 'Menu' icon and selecting 'configure'. You can also launch :
$ cinnamon-menu-editor
Using bash you can create a symbolic link to a .desktop file anywhere on your system and place that link in /usr/share/applications
$ ln -s path/to/target/file.desktop LINK_NAME
Make sure the .desktop file has proper permissions :
$ chmod 644 path/to/file.desktop
The menu entry will appear after logging out.
Locate a binary
$ type man man is /usr/bin/man
AppImages
Extract the content of an AppImage :
./your.AppImage –appimage-extract
This is useful if you want to get the Icon.
Link to AppImage Daemon This Daemon scans well known places for appimages and creates menu entries and extracts icons
Grub
Config file is located at /etc/default/grub
The line for a splash image is GRUB_BACKGROUND=/path/to/image.jpg
Limit CPU usage
There are various ways to limit the CPU usage of a process. One simple way is using cpulimit
$ cpulimit -P /path/to/executable -l %CPU (e.g. 40) -b (background)
Fonts install (bash)
To quickly install folders containing many OpenType fonts (OTF) or TrueType fonts (TTF), copy to the following locations :
$ sudo cp -r /path/to/OTF-folder /usr/share/fonts/opentype/ $ sudo cp -r /path/to/TTF-folder /usr/share/fonts/truetype/
Regenerate font cache :
$ sudo fc-cache -f -v
Note : This will install fonts system-wide. To install for a single user only copy the files to :
~/.fonts/
and regenerate font cache.
Manipulate pdf
Modifying page order
Use (pdftk (ubuntu) → deprecated) or pdf-stapler (fedora) :
For example to extract two pages out of a pdf
$ pdf-stapler cat in.pdf 2-3 out.pdf
Old syntax with pdftk : $ pdftk in.pdf cat 3-4 output out.pdf
Ubuntu and derivatives
pdfshuffler is a front end for python-pyPdf and a great tool for merging or splitting pdf files with a GUI.
Reducing PDF size
Found from this answer on AskUbuntu :
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
-dPDFSETTINGS
can be the following :
/screen
lower quality, smaller size. (72 dpi)/ebook
for better quality, but slightly larger pdfs. (150 dpi) - This one gives quite a good ratio of quality-loss/size-reduction/prepress
output similar to Acrobat Distiller “Prepress Optimized” setting (300 dpi)/printer
selects output similar to the Acrobat Distiller “Print Optimized” setting (300 dpi)/default
selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file
Repair FAT32 FS errors
When FAT32 filesystems mount in read-only it's often related to corrupted filesystem.
Run dmesg to check. If you see lines such as :
[54259.098330] FAT-fs (sdb1): error, corrupted directory (invalid entries) [54259.098338] FAT-fs (sdb1): Filesystem has been set read-only [54304.610623] FAT-fs (sdb1): error, corrupted directory (invalid entries) [54304.690012] FAT-fs (sdb1): error, invalid access to FAT (entry 0xf7d0f91e) [54304.690213] FAT-fs (sdb1): error, invalid access to FAT (entry 0xff27ff23) [54304.690314] FAT-fs (sdb1): error, invalid access to FAT (entry 0xff0dff13)
Run the following command :
$ sudo umount /dev/sdX# $ sudo fsck.msdos -aw /dev/sdX#
Data Recovery
Try Test Disk & PhotoRec written by Christophe Grenier
For .mov
PhotoRec 7.1-WIP In FileOptsMenu check :
[X] mov/mdat Recover mdat atom as a separate file
Two files are created for every .mov recovered. Concatenate with :
cat f123_ftyp.mov f456_mdat.mov > 1.mov cat f456_mdat.mov f123_ftyp.mov > 2.mov
One of the two files will be good. Sometimes one file is .mp4 and the other is .mov :
cat f54114560.mp4 f51781632_mdat.mov > 1.mov
Mount NTFS
If a NTFS volume mounts in read-only, remount using :
$ su $ mkdir /mnt/ntfs $ mount -t ntfs /dev/sd[X] /mnt/ntfs
mplayer
Configuration Files
Global
- /etc/mplayer/mplayer.conf
Local
- ~/.mplayer/config
- ~/.mplayer/input.conf
- ~/.mplayer/menu.conf
Common Options
fs=yes #enable fullscreen noborder=yes ontop=yes geometry=+3200 osdlevel=0
Using Apple USB SuperDrive
Required packages
sg3-utils
Find USB Drive
(usually sr0 or sr1)
$ ls /dev | grep 'dvd'
Send activation byte sequence
(change sr0 accordingly if needed)
$ sg_raw /dev/sr0 EA 00 00 00 00 00 01
QCAD Tutorial removal
This is not specifically linux-related but since every time I install it (especially on MacOS systems) it's such a pain to find the plugins/ folder from where to remove the plugins blocking the trial version of QCAD here's an easy way to find them :
Go to Help > About > Plugins and just click on the name of one of the plugins.
In MacOS it will be QCAD > About > Plugins instead.
LAMPP Local Server
Start stop the server using :
sudo /opt/lampp/lampp start/stop
Put your sites and data in :
/opt/lampp/htdocs/example_site
Fixes
Wired network doesn't work after suspend (does not work)
Identify your wired interface card module. Realtek 8169 is known to have this issue with some kernels.
$ lsmod
Look for :
.... hid 118784 2 usbhid,hid_generic ahci 36864 4 r8169 86016 0 libahci 32768 1 ahci mii 16384 1 r8169 ...
Edit (create if it doesn't exist) the file :
$nano /etc/pm/config.d/unload_modules
Append the following line :
SUSPEND_MODULES="$SUSPEND_MODULES r8169"
Replace module name if necessary
Note to self : Added “mii” module to the list, the fix didn't seem to hold after reboot. Mii seems to be using r8169 and is network-monitoring-related
Fixing python on youtube-dl
If following error occurs while using youtube-dl
:
/usr/bin/env: ‘python’: No such file or directory
If python3 is not installed
$sudo apt install python3
If python3 is installed
$whereis python3 $sudo ln -s /usr/bin/python3 /usr/bin/python
Change first argument according to where python3 is installed.
Linux Screencast tools
- Kazam : only one tried at the moment, produces OK files and you can select a specific region you want to capture
- gtk-recordmydesktop
- vokoscreen
- simplescreenrecorder
- add-apt-repository ppa:maarten-baert/simplescreenrecorder
Open VPN
Connecting a client to a remote server
This requires a valid .ovpn file
openvpn --config /path/to/file.ovpn
Connecting to shared folders through openvpn
This requires the ip of the shared folders location
Samba tips
List available shares on a given host
Replace host with the hostname or IP address of the server running samba shares
$ smbclient -L host
Output will be something like this
Sharename Type Comment --------- ---- ------- home Disk shares Disk users Disk IPC$ IPC IPC Service () Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- ------- MY_WORK CODE-CA04
Locate mount points
Most of the time they are located at /run/user/##ID##/gvfs
Alias
Create an alias using command
alias name='command'
The alias is only in place while the user session is active. To make it permanent, write it in the .bashrc
file in the home directory of the user. (more info)
You can reload the .bashrc file using :
$ source ~/.bashrc #or $ . ~/.bashrc
Programming Mouse Buttons
$ sudo apt install xbindkeys xvkbd $ xev | grep ', button' #Find the buttons you need to map $ touch ~/.xbindkeysrc $ nano ~/.xbindkeysrc
Sample File :
# Send enter on thumb mouse button "xvkbd -text '\r'" b:8
Ccheck xvkbd for more syntax
Useful shell
Mass renaming files
Debian Admin guide to mass renaming You can use for commands in the shell or use the 'rename' tool (written in perl). For example :
skx@lappy:~$ ls a.JPG b.JPG c.JPG d.JPG skx@lappy:~$ for i in *.JPG; do mv "$i" "${i/.JPG}"; done skx@lappy:~$ ls a.jpg b.jpg c.jpg d.jpg
cut
Remove sections from input and output them
$ date Thu 02 Jan 2020 08:20:10 PM CET $ date | cut -c17-24 08:21:02
Mount
List mounts
$ findmnt
Target disk
$ sudo fdisk -l Disk /dev/sda [...] Disk /dev/sdb [...]
Create mount point
$ sudo mkdir /media/DRIVE
Mount device
$ sudo mount /dev/sda1 /media/DRIVE
Unmount
$ sudo umount /media/DRIVE
pwd
Display Present Working Directory
$ pwd /home/pi
tar
Pack/Unpack tarball
#All the following commands are verbose (-v) and target a file archive (-f) $ tar -xvf file.tar #Unpack tar (-x : extract) $ tar -xvzf file.tar.gz #Unpack compressed (gzip) tar (-z : filter through gzip) $ tar -cvf file.tar /path/folder #Pack folder into file.tar archive (-c : create) $ tar -cvzf file.tar /path/folder #Same as above with compression (gzip) (-z : filter through gzip)
Samba
sudo service smbd start/stop/restart
apt and dpkg
Fixing apt dependency problems
This can fix some states in which apt is broken and refuses to update because some libraries fail :
$ dpkg --configure -a $ apt --fix-broken install
List info
Display all information
$ inxi -F
Read the manual, inxi is a very powerful tool to quickly get an overview of a full hardware setup
Distrib
$ lsb_release -d
CPU
Basic
$ lscpu
Detailed, core-specific information, output /proc/cpuinfo
$ cat /proc/cpuinfo
On Macs :
$ sysctl -n machdep.cpu.brand_string
Mounted devices
$ df -h
Kernel
$ uname -snrm
- s : kernel name
- n : network node hostname
- r : kernel relase number
- m : machine hardware name
http://www.tecmint.com/useful-linux-commands-for-system-administrators/
Kernel modules
$ lsmod
Bash history
$ history
D-Bus/system bus history
$ gdbus $ g-feet //gui history
Motherboard information
$ sudo dmidecode | grep -A3 ‘^System Information’
dmidecode spurns out a lot of information if you want to query your system
Diagnostics & Tools
$ uptime [load Average] $ dmesg -T | tail [Kernel errors] $ vmstat 1 [Virtual memory and detailed information] $ mpstat -P ALL 1 [CPU state] $ pidstat [processes] $ free -m [memory] $ atop [main overview]
Debug & Logs
/var/log/syslog
Check in /var/log
which file was last changed. Use :
$ls -lart //inverted sorted by time. Last entry is latest modified