Linux
System
Description | Command |
---|---|
Boot into CLI mode | sudo systemctl set-default multi-user.target |
Boot into desktop mode | sudo systemctl set-default graphical.target |
Detach a job from the current session | sudo rsync templates/* whatever/ & jobs disown -h %1 |
Change the shape of the cursor |
echo -e -n "\x1b[\x30 q" # changes to blinking block |
SSH
Description | Command |
---|---|
Create private/public SSH key file using 2048 bit encryption and with a comment. The command creates files under ~/.ssh folder. | ssh-keygen -b 2048 -C user@host.domain |
Push public SSH key to a server | ssh-copy-id -p 41111 -i ~/.ssh/id_rsa.pub mhan@remote.server.com |
Reset (SELinux) permissions related to SSH. This may be needed if all else fails to correct the issue of system not accepting public keys. | restorecon -R -v ~/.ssh |
Tunneling
Say I'm trying to access 10.101.1.10 server via SSH which is behind a restrictive firewall through 64.106.170.61. The first command will map the port 50010 of the local machine to port 22 of 10.101.1.10 that is accessible from 64.106.170.61.
Description | Command | Distro |
---|---|---|
Create a SSH tunnel & connect via port 50010 | $ ssh -L 50010:10.101.1.10:22 mhan@64.106.170.61 $ ssh -p 50010 127.0.0.1 |
Disk
Description | Command |
---|---|
Check if GRUB is installed on a partition (e.g. /dev/sda) | sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings |
Search
- xargs - to be processed - Things you (probably) didn’t know about xargs
LVM
Physical volume
Description | Command |
---|---|
Initialize for use as LVM physical volume. | pvcreate /dev/sdb1 |
Scanning for block devices. | lvmdiskscan |
Display the physical volumes. | pvdisplay |
Show all physical devices. | pvscan |
Prevent allocation of physical extents on the free space of one or more physical volumes. | pvchange -x n /dev/sdb1 |
Resize. | pvresize |
Remove LVM label. | pvremove |
Volume group
Description | Command |
---|---|
Create a volume group. | vgcreate vg1 /dev/sdb1 /dev/sdc1 |
Add a physical volume to a volume group. | vgextend vg1 /dev/sdd1 |
Display volume group. | vgdisplay new_vg |
Scan disks for volume groups. | vgscan |
Remove a physical volume from a volume group. | vgreduce group_name /dev/sdc1 |
Change the maximum number of logical volumes of volume group vg00 to 128. | vgchange -l 128 /dev/vg00 |
Activate or deactivate a volume group. | vgchange -a n my_volume_group |
Remove a volume group. | vgremove officevg |
Split the physical volumes of a volume group and create a new volume group. | $ vgsplit bigvg smallvg /dev/ram15 Volume group "smallvg" successfully split from "bigvg" |
Merge the inactive volume group my_vg into the active or inactive volume group databases giving verbose runtime information. | vgmerge -v databases my_vg |
Change the name of a volume group. | vgrename vg02 my_volume_group |
Deleting volumes and then increasing the size of another volume
- Last tested on RHEL 7.8 (2020-10-21)
These commands remove volumes named laravelhome and laravelhtml, and then increase lv_var volume with the remaining space.
[root@it153coai01lnx ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 476M 0 part /boot
└─sda2 8:2 0 39.5G 0 part
├─vg00-swap 253:0 0 1.9G 0 lvm [SWAP]
├─vg00-lv_root 253:1 0 9.3G 0 lvm /
├─vg00-lv_tmp 253:2 0 1.9G 0 lvm /tmp
├─vg00-lv_var 253:3 0 3.7G 0 lvm /var
├─vg00-lv_varlog 253:4 0 3.7G 0 lvm /var/log
├─vg00-lv_home 253:5 0 5G 0 lvm /home
└─vg00-laravelhome 253:6 0 19G 0 lvm
sdb 8:16 0 5G 0 disk
└─vg00-laravelhome 253:6 0 19G 0 lvm
sdc 8:32 0 35G 0 disk
└─vg00-laravelhtml 253:7 0 35G 0 lvm
sr0 11:0 1 1024M 0 rom
[root@it153coai01lnx ~]# vgdisplay
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 8
Open LV 6
Max PV 0
Cur PV 3
Act PV 3
VG Size 79.52 GiB
PE Size 4.00 MiB
Total PE 20358
Alloc PE / Size 20358 / 79.52 GiB
Free PE / Size 0 / 0
VG UUID k3r0vo-ZcxE-3aQt-Bfjp-0KHf-zrbw-jD1oaA
[root@it153coai01lnx ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
laravelhome vg00 -wi-a----- <19.04g
laravelhtml vg00 -wi-a----- <35.00g
lv_home vg00 -wi-ao---- 5.00g
lv_root vg00 -wi-ao---- 9.31g
lv_tmp vg00 -wi-ao---- 1.86g
lv_var vg00 -wi-ao---- <3.73g
lv_varlog vg00 -wi-ao---- <3.73g
swap vg00 -wi-ao---- 1.86g
# remove entries from /etc/fstab
[root@it153coai01lnx ~]# vim /etc/fstab
[root@it153coai01lnx ~]# lvchange -an /dev/vg00/laravelhome
[root@it153coai01lnx ~]# lvchange -an /dev/vg00/laravelhtml
[root@it153coai01lnx ~]# lvremove /dev/vg00/laravelhome
Logical volume "laravelhome" successfully removed
[root@it153coai01lnx ~]# lvremove /dev/vg00/laravelhtml
Logical volume "laravelhtml" successfully removed
[root@it153coai01lnx ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home vg00 -wi-ao---- 5.00g
lv_root vg00 -wi-ao---- 9.31g
lv_tmp vg00 -wi-ao---- 1.86g
lv_var vg00 -wi-ao---- <3.73g
lv_varlog vg00 -wi-ao---- <3.73g
swap vg00 -wi-ao---- 1.86g
[root@it153coai01lnx ~]# lvextend -L+2G /dev/vg00/lv_var
Size of logical volume vg00/lv_var changed from <3.73 GiB (954 extents) to <5.73 GiB (1466 extents).
[root@it153coai01lnx ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 899M 0 899M 0% /dev
tmpfs 910M 232K 910M 1% /dev/shm
tmpfs 910M 98M 813M 11% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/vg00-lv_root 9.4G 6.0G 3.4G 65% /
/dev/sda1 473M 181M 293M 39% /boot
/dev/mapper/vg00-lv_home 5.0G 1.2G 3.9G 23% /home
/dev/mapper/vg00-lv_tmp 1.9G 33M 1.9G 2% /tmp
/dev/mapper/vg00-lv_var 3.8G 3.7G 62M 99% /var
/dev/mapper/vg00-lv_varlog 3.8G 103M 3.7G 3% /var/log
tmpfs 182M 0 182M 0% /run/user/4323
# for ext3 or ext4, it'd be: resize2fs /dev/vg00/lv_var; this is for an xfs fs
[root@it153coai01lnx ~]# xfs_growfs /dev/vg00/lv_var
meta-data=/dev/mapper/vg00-lv_var isize=256 agcount=4, agsize=244224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=976896, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 976896 to 1501184
[root@it153coai01lnx ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 899M 0 899M 0% /dev
tmpfs 910M 232K 910M 1% /dev/shm
tmpfs 910M 98M 813M 11% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/vg00-lv_root 9.4G 6.0G 3.4G 65% /
/dev/sda1 473M 181M 293M 39% /boot
/dev/mapper/vg00-lv_home 5.0G 1.2G 3.9G 23% /home
/dev/mapper/vg00-lv_tmp 1.9G 33M 1.9G 2% /tmp
/dev/mapper/vg00-lv_var 5.8G 3.7G 2.1G 64% /var
/dev/mapper/vg00-lv_varlog 3.8G 103M 3.7G 3% /var/log
tmpfs 182M 0 182M 0% /run/user/4323
Adding a new disk to a LVM
- Last tested on CentOS 8.1.1911 (2020-07-06)
[root@chara mhan]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
└─sda1 8:1 0 238.5G 0 part
├─centos_chara-root 253:0 0 2T 0 lvm /
└─centos_chara-home 253:2 0 200G 0 lvm /home
sdb 8:16 0 119.2G 0 disk
├─sdb1 8:17 0 200M 0 part /boot/efi
├─sdb2 8:18 0 1G 0 part /boot
└─sdb3 8:19 0 118G 0 part
├─centos_chara-root 253:0 0 2T 0 lvm /
└─centos_chara-swap 253:1 0 7.9G 0 lvm [SWAP]
sdc 8:32 0 1.8T 0 disk
└─sdc1 8:33 0 1.8T 0 part
└─centos_chara-root 253:0 0 2T 0 lvm /
sdd 8:48 0 931.5G 0 disk
└─sdd1 8:49 0 931.5G 0 part
sr0 11:0 1 1024M 0 rom
[root@chara mhan]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8d7dc33f.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-1953525167, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525167, default 1953525167):
Created a new partition 1 of type 'Linux' and of size 931.5 GiB.
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[root@chara mhan]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
[root@chara mhan]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_chara 3 3 0 wz--n- <2.17t 0
[root@chara mhan]# vgextend centos_chara /dev/sdd1
Volume group "centos_chara" successfully extended
[root@chara mhan]# lvdisplay | grep Path
LV Path /dev/centos_chara/swap
LV Path /dev/centos_chara/root
LV Path /dev/centos_chara/home
[root@chara mhan]# lvresize -l +100%free /dev/centos_chara/root
Size of logical volume centos_chara/root changed from 1.96 TiB (514983 extents) to 2.87 TiB (753449 extents).
Logical volume centos_chara/root successfully resized.
[root@chara mhan]# df -h | grep root
/dev/mapper/centos_chara-root 2.0T 1.9T 89G 96% /
[root@chara mhan]# grep root /etc/mtab
/dev/mapper/centos_chara-root / xfs rw,relatime,attr2,inode64,noquota 0 0
[root@chara mhan]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 176K 7.8G 1% /dev/shm
tmpfs 7.8G 9.3M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos_chara-root 2.0T 1.9T 89G 96% /
/dev/sdb2 1014M 293M 722M 29% /boot
/dev/mapper/centos_chara-home 200G 103G 98G 52% /home
/dev/sdb1 200M 11M 190M 6% /boot/efi
tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000
[root@chara mhan]# xfs_growfs /
meta-data=/dev/mapper/centos_chara-root isize=512 agcount=161, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0, rmapbt=0
= reflink=0
data = bsize=4096 blocks=527342592, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 527342592 to 771531776
[root@chara mhan]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 176K 7.8G 1% /dev/shm
tmpfs 7.8G 9.3M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos_chara-root 2.9T 1.9T 1020G 66% /
/dev/sdb2 1014M 293M 722M 29% /boot
/dev/mapper/centos_chara-home 200G 103G 98G 52% /home
/dev/sdb1 200M 11M 190M 6% /boot/efi
tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000
[root@chara mhan]#
Separating out /srv to a dedicated LVM
- Last tested on RHEL 8.8 (2023-10-09). LoboCloud VM w/ 250 addl.
# pvcreate /dev/sdb
# vgcreate vgapps /dev/sdb
# lvcreate -n lv_www -L 100G vgapps
# mkfs.xfs /dev/mapper/vgapps-lv_www
# mount /dev/mapper/vgapps-lv_www /mnt
# mv -a /srv/* /mnt/
# vi /etc/fstab
/dev/mapper/vgapps-lv_www /srv xfs defaults 0 0
# umount /mnt
# mount /dev/mapper/vgapps-lv_www /srv
To access the old /srv folder
# mount -o bind / /mnt
Links
Users
UID or GID
Description | Command |
---|---|
Check UID. | id -u username |
Check GID. | id -g username |
Check all of the groups a user belongs to. | id -G username |
Check UID and all of the groups a user belongs to. | id username |
File
Permissions
Letter | Number |
---|---|
r | 4 |
w | 2 |
x | 1 |
rw- | 6 |
r-x | 5 |
rwx | 7 |
Audio
ALSA (Advanced Linux Sound Architecture)
Setting default output device
Ref: StackExchange/superuser: How to make Alsa pick a preferred sound device automatically?
List all audio cards you have:
$ cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xf7530000 irq 41
1 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xf7080000 irq 17
2 [SoundBar ]: USB-Audio - Dell AC511 USB SoundBar
Dell Dell AC511 USB SoundBar at usb-0000:00:14.0-4, full speed
Get ALSA identifiers of those:
$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq
PCH
NVidia
SoundBar
Update /etc/asound.conf:
pcm.!default {
type hw
card SoundBar
}
ctl.!default {
type hw
card SoundBar
}
I found that the numeric identifier for these cards and change on reboot. That may be related to how the hardware detection works on Linux, and the order changes time to time. So I've used the string identifier instead -- seems to stick better than a numeric value.
PulseAudio
Restart pulseaudio. Do not sudo for this.
$ pulseaudio -k && pulseaudio -D
List sinks.
$ pacmd list-sinks
1 sink(s) available.
* index: 0
name: <alsa_output.usb-Dell_Dell_AC511_USB_SoundBar-00-SoundBar.analog-stereo>
driver: <module-alsa-card.c>
flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 9049
volume: front-left: 26202 / 40% / -23.89 dB, front-right: 26202 / 40% / -23.89 dB
balance 0.00
base volume: 107931 / 165% / 13.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max request: 0 KiB
max rewind: 0 KiB
monitor source: 0
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
card: 1 <alsa_card.usb-Dell_Dell_AC511_USB_SoundBar-00-SoundBar>
module: 7
properties:
alsa.resolution_bits = "16"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "USB Audio"
alsa.id = "USB Audio"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.card = "0"
alsa.card_name = "Dell AC511 USB SoundBar"
alsa.long_card_name = "Dell Dell AC511 USB SoundBar at usb-0000:00:14.0-4, full speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "pci-0000:00:14.0-usb-0:4:1.0"
sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/sound/card0"
udev.id = "usb-Dell_Dell_AC511_USB_SoundBar-00-SoundBar"
device.bus = "usb"
device.vendor.id = "413c"
device.vendor.name = "Dell Computer Corp."
device.product.id = "a503"
device.product.name = "Dell AC511 USB SoundBar"
device.serial = "Dell_Dell_AC511_USB_SoundBar"
device.string = "front:0"
device.buffering.buffer_size = "352800"
device.buffering.fragment_size = "176400"
device.access_mode = "mmap+timer"
device.profile.name = "analog-stereo"
device.profile.description = "Analog Stereo"
device.description = "Dell AC511 USB SoundBar Analog Stereo"
alsa.mixer_name = "USB Mixer"
alsa.components = "USB413c:a503"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-usb"
ports:
analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
properties:
active port: <analog-output>
Networking
How To Use Nmap to Scan for Open Ports on your VPS
Description | Command | Distro |
---|---|---|
Scan a network for connected computers | $ sudo nmap -sP 129.24.22.0/24 | |
Check for an open port | $ nc -zv 192.168.86.108 1523 |
Firewall
Description | Command | Distro |
---|---|---|
Open a firewall port | $ sudo ufw allow 55301 | |
Open a firewall port | $ sudo firewall-cmd --zone=public --add-port=55301/tcp --permanent $ sudo firewall-cmd --reload |
|
Close a firewall port | $ sudo ufw deny 55301 | |
Close a firewall port | $ sudo firewall-cmd --zone=public --remove-port=55301/tcp --permanent $ sudo firewall-cmd --reload |
|
Package management
Transaction check errors
- Last tested on RHEL 7.8 (2020-10-21)
# running a yum update yields the following
file /etc/os-release from install of redhat-release-server-7.9-3.el7.x86_64 conflicts with file from package oraclelinux-release-7:7.8-1.0.7.el7.x86_64
file /etc/redhat-release from install of redhat-release-server-7.9-3.el7.x86_64 conflicts with file from package oraclelinux-release-7:7.8-1.0.7.el7.x86_64
file /etc/rpm/macros.dist from install of redhat-release-server-7.9-3.el7.x86_64 conflicts with file from package oraclelinux-release-7:7.8-1.0.7.el7.x86_64
file /etc/system-release from install of redhat-release-server-7.9-3.el7.x86_64 conflicts with file from package oraclelinux-release-7:7.8-1.0.7.el7.x86_64
file /etc/system-release-cpe from install of redhat-release-server-7.9-3.el7.x86_64 conflicts with file from package oraclelinux-release-7:7.8-1.0.7.el7.x86_64
$ sudo yum install --downloadonly redhat-release-server
$ sudo find /var/cache/yum -type f -name "redhat-release-server*" -exec rpm -Uvh --force {} \;
$ sudo yum --disablerepo="*" --enablerepo="rhel*" --disablerepo="oraclelinux*" --disablerepo="rhel-source*" --disablerepo="rhel-beta*" update -y && sudo yum -y upgrade && sudo yum -y autoremove
Security
Links
Miscellaneous
- X11 - X Window System
- i3wm - i3 window manager
- Running Steam on CentOS 7 with NVIDIA driver
- History