- **Disk Management**: Added commands for switching data between two USB drives, including formatting and copying operations. - **Diagnosis**: - **Apt**: Included command to view APT logs for package history. - **Wayland Issues**: Added commands for checking system logs and GPU information to diagnose Wayland-related issues.
11 KiB
Linux
Table of Contents
- Linux
System Information
Hardware Information
To gather detailed information about your hardware, use the following commands:
lscpu: Displays information about the CPU architecture, including details about cores, threads, and CPU family.lshw: Provides a comprehensive listing of hardware components. Uselshw -shortfor a more concise view.hwinfo: Offers detailed information about hardware components and can be more verbose thanlshw.lsscsi: Lists SCSI devices, including disks and other SCSI-attached hardware.lsusb: Shows information about USB devices connected to your system.lsblk: Lists block devices such as hard drives and their partitions.df -H: Displays disk space usage in a human-readable format.fdisk -l: Lists all partitions on the system.dmidecode: Retrieves hardware information from the BIOS. Use:dmidecode -t processorfor CPU detailsdmidecode -t memoryfor RAM detailsdmidecode -t biosfor BIOS information
Software Information
Finding Path to Binary
To find the location of an executable binary, use:
type composer
This command will show the path to the composer executable if it's available in your PATH.
Number of Words in a File
To count the number of words in a file, use:
wc filepath
This command will show the number of words along with other details like lines and characters.
Number of Lines in a File
To count the number of lines in a file, use:
wc -l filepath
This command will display the number of lines in the specified file.
User Management
User Information
List Users
To list all users from the /etc/passwd file, use:
awk -F':' '{ print $1}' /etc/passwd | sort
This command extracts the usernames from the /etc/passwd file and sorts them in alphabetical order.
Super User Management
Disable Root Login
To disable root login via SSH, perform the following steps:
-
Edit the SSH Configuration File:
nano /etc/ssh/sshd_configComment out the line containing
PermitRootLoginby adding a#at the beginning of the line. -
Change Shell for Root User:
nano /etc/passwdFind the line starting with
rootand change/bin/bashto/sbin/nologinto disable login for the root user.Save and close the file. Restart the SSH service for changes to take effect:
systemctl restart ssh
Sudo Management
Add User to Sudo Group
adduser fabrice sudo
Update Sudoers File to Remove Password Requirement
Edit the sudoers file:
visudo
Add the following line to allow the user to execute commands without a password:
fabrice ALL=(ALL) NOPASSWD:ALL
Switch User
Switch to Another User as Sudoer
sudo -i -u postgres
This command switches to the postgres user with sudo privileges.
Switch to Another User as Root
su - postgres
This command switches to the postgres user with root privileges.
System Management
Ensure hostname or add alias
Set or update the hostname for your server.
nano /etc/hosts
# Add the hostname alias:
# 127.0.1.1 local.servername.domain.com
nano /etc/hostname
# Set the main hostname:
# 127.0.1.1 servername.domain.com servername
hostnamectl set-hostname servername.domain.com
Tar backup for a large number of small files
These commands create backups using tar and transfer them securely over SSH.
Create a tar archive and transfer it to a remote server:
tar -c /path/to/dir | ssh fabrice@servername.domain.com 'tar -xvf - -C /absolute/path/to/remotedir'
Compress and transfer a folder, then store it as a .tar.gz file:
tar zcvf - /folder | ssh fabrice@servername.domain.com "cat > /backup/folder.tar.gz"
Transfer a compressed .tar.gz file and extract it on the remote server:
cat folder.tar.gz | ssh fabrice@servername.domain.com "tar zxvf -"
Alternative method: change directory on the remote server before extracting:
cat folder.tar.gz | ssh fabrice@servername.domain.com "cd /path/to/dest/; tar zxvf -"
List time zones
Use timedatectl to list available time zones or check the current settings.
timedatectl
timedatectl list-timezones
Configure time zone
Configure the time zone using timedatectl or by manually setting a symbolic link to /etc/localtime.
timedatectl set-timezone "America/Toronto"
Alternatively, manually set the time zone by linking the correct file:
mv /etc/localtime /etc/localtime-old
ln -s /usr/share/zoneinfo/America/Toronto /etc/localtime
Find a specific service
Search for a specific service running on your system.
systemctl list-units --type=service | grep php
Change password of a tar/openssl archive
Decrypt the archive
To decrypt an openssl-encrypted archive using a password stored in a file:
-
Store your password in this file.
nano $HOME/xyz001.txt -
Decrypt the archive
Decrypt the archive using the password stored in xyz001.txt.openssl aes-256-cbc -d -pbkdf2 -in servername-backup.tar.gz -out servername-backup.tar -pass file:$HOME/xyz001.txt -
Re-encrypt the archive with a new password
nano $HOME/xyz001.txt openssl aes-256-cbc -e -pbkdf2 -in servername-backup.tar -out servername-backup-new.tar.gz -pass file:$HOME/xyz001.txt rm $HOME/xyz001.txt
Decode / Extract
To decrypt and extract the contents of an encrypted archive directly into a directory:
nano $HOME/xyz001.txt
openssl aes-256-cbc -d -pbkdf2 -in servername-backup.tar.gz -pass file:xyz001.txt | tar xz -C .
rm $HOME/xyz001.txt
Verify two possibly identical folders recursively
With diff
Check for differences between two directories, comparing all files recursively:
diff -r servername-files/data/servername-repositories/ servername-repositories/
Outputs any differences found between the two directories.
With rsync
Use rsync to show differences without copying any data:
rsync -avn servername-files/data/servername-repositories/ servername-repositories/
- The
-nflag means this is a dry run, which won’t make any changes.
With cmp
This script compares files in two directories and identifies any differences between matching file names.
#!/bin/bash
dir1="servername-files/data/servername-repositories/"
dir2="servername-repositories/"
# Check if both directories exist before proceeding.
if [ ! -d "$dir1" ] || [ ! -d "$dir2" ]; then
echo "One or both directories do not exist."
exit 1
fi
# Iterate through all files in dir1 and compare with corresponding files in dir2.
for file1 in $(find "$dir1" -type f); do
file2="${file1/$dir1/$dir2}"
if [ ! -f "$file2" ]; then
echo "File $file2 not found."
else
cmp --silent "$file1" "$file2" || echo "Files $file1 and $file2 differ."
fi
done
USB Devices
Test USB Key
Device Information
Check if the system recognizes the device and show the latest system messages related to USB devices being connected:
lsusb
dmesg | tail -n 20
Find Mount Points and Device Information
Identify mount points, partitions, and other relevant details of mounted devices:
lsblk -f
df -h | grep /dev/sdc
findmnt /dev/sdc1
mount | grep /dev/sd
Print Detailed Information About the USB Key
View detailed partition and disk information:
fdisk -l /dev/sdc
Test the File System
Check and repair the filesystem on the USB key:
fsck /dev/sdc1
Test Data Integrity
Perform read/write tests to ensure the integrity of the USB key:
-
Unmount the USB Key (if mounted):
umount /media/fabrice/BD48-F8BB -
Write Test:
dd if=/dev/zero of=/dev/sdc bs=4M count=256 status=progress -
Read Test:
dd if=/dev/sdc of=/dev/null bs=4M count=256 status=progress
Check for Bad Blocks
Identify any bad sectors on the USB key:
-
Read-only test:
badblocks -v /dev/sdc -
Non-destructive read-write test:
badblocks -nsv /dev/sdc- The
-noption performs a non-destructive read-write test. - The
-soption shows progress. - The
-voption is for verbose output.
- The
Perform a SMART Test
Run SMART diagnostics to test the health of the USB key:
-
Start a short SMART test:
smartctl -t short /dev/sdc -
View test results:
smartctl -a /dev/sdc
Benchmark the Speed
Measure the read speed of the USB key:
hdparm -t /dev/sdc
Unmount and Safely Remove
Unmount the USB key and safely remove it from the system:
umount /mnt/usb
eject /dev/sdc
Switching two USB keys
The following commands copy data between two USB drives, format one of them, and restore the data.
cp -r /media/fabrice/465A-759B "/tmp/Michael Allison"
umount /dev/sdc1
mkfs.vfat /dev/sdc1
umount /dev/sdc1
dd if=/dev/sdc of=/tmp/usb_image.img bs=4M status=progress
mkfs.vfat /dev/sdc1
cp -r "/tmp/Michael Allison" /media/fabrice/D67D-ADF8
umount /dev/sdc1
dd if=/tmp/usb_image.img of=/dev/sdc bs=4M status=progress
sync
Diagnosis
Debian Upgrade Issues
Apt Logs
View the APT logs to check for package installation and updates history:
less /var/log/apt/history.log
Wayland Issues
System Logs
Examine system logs and hardware information for troubleshooting Wayland issues:
lspci -k | grep -A 3 -E "(VGA|3D)"
lsmod | grep -i "drm\|gpu\|nouveau\|amdgpu\|i915"
glxinfo | grep "OpenGL version"
GPU Information
Search the system logs for any errors or warnings related to GPU and Wayland:
journalctl -b | grep -i "drm\|gpu\|display\|wayland\|monitor"
journalctl -b | grep -i "gnome-shell"
Fonts
Download and Install Fonts
-
Download the Font Archive:
wget https://path/to/font/archive.tar.gz -
Extract the Font Files:
tar -xzvf font-archive.tar.gz -
Copy the Font Files to the Local Fonts Directory:
cp -v *.ttf ~/.local/share/fonts/
Update the Font Cache
Force a Reload of the Installed Font Cache:
sudo su -
fc-cache -fv
fc-cache -frv
-f: Force re-generation of apparently up-to-date cache files, overriding the timestamp checking.-r: Erase all existing cache files and rescan.-v: Display status information while busy.