<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2150109385261698170</id><updated>2026-03-09T16:35:18.148+08:00</updated><category term="Centos"/><category term="Ubuntu"/><category term="ssh"/><category term="tools"/><category term="Redhat"/><category term="docker"/><category term="Fedora"/><category term="General"/><category term="network"/><category term="virtualization"/><category term="container"/><category term="bash"/><category term="linux mint"/><category term="containers"/><category term="mysql"/><category term="Backup"/><category term="openssh"/><category term="RPM"/><category term="apache"/><category term="php"/><category term="postgresql"/><category term="DNS"/><category term="LVM"/><category term="command"/><category term="http"/><category term="podman"/><category term="yum"/><category term="apt"/><category term="firewall"/><category term="httpd"/><category term="mariadb"/><category term="nginx"/><category term="service"/><category term="ssh-tunnel"/><category term="ssl"/><category term="systemd"/><category term="vim"/><category term="windows"/><category term="audio/video"/><category term="grub"/><category term="hard disk"/><category term="opensource news"/><category term="partition"/><category term="proxmox"/><category term="security"/><category term="socks-proxy"/><category term="vi"/><category term="OpenOffice"/><category term="TimeDate"/><category term="debian"/><category term="editor"/><category term="hardware"/><category term="openssl"/><category term="python"/><category term="repository"/><category term="singularity"/><category term="systemctl"/><category term="android"/><category term="curl"/><category term="files"/><category term="iptables"/><category term="kernel"/><category term="virtualbox"/><category term="wordpress"/><category term="apache2"/><category term="cmd"/><category term="file"/><category term="joomla"/><category term="kill"/><category term="mail"/><category term="process"/><category term="proxy"/><category term="remote desktop"/><category term="screen"/><category term="shell"/><category term="terminal"/><category term="termux"/><category term="RHEL"/><category term="apt-get"/><category term="archive"/><category term="commands"/><category term="dd"/><category term="deb"/><category term="dockerhub"/><category term="email"/><category term="ffmpeg"/><category term="filesystem"/><category term="hardisk"/><category term="https"/><category term="iso"/><category term="ldap"/><category term="linux"/><category term="mailserver"/><category term="mongo"/><category term="mongodb"/><category term="mongodb replica"/><category term="mount"/><category term="netcat"/><category term="nfs"/><category term="nmap"/><category term="openstack"/><category term="pdf"/><category term="postgresql replication"/><category term="ps"/><category term="python3"/><category term="qrcode"/><category term="remote connection"/><category term="replication"/><category term="rsync"/><category term="sed"/><category term="split"/><category term="sshd"/><category term="vmware"/><category term="vpn"/><category term="webserver"/><category term="wget"/><category term="xen"/><category term="GUI"/><category term="RHEV"/><category term="RHV"/><category term="alpine linux"/><category term="ansible"/><category term="application"/><category term="bitnami"/><category term="chrony"/><category term="cinnamon"/><category term="clustercontrol"/><category term="clustering"/><category term="command line"/><category term="disk"/><category term="dnsmasq"/><category term="dpkg"/><category term="driver"/><category term="ext4"/><category term="fastcgi"/><category term="file transfer"/><category term="find"/><category term="firefox"/><category term="fstab"/><category term="grub2"/><category term="http-proxy"/><category term="internet"/><category term="ip scan"/><category term="jar"/><category term="java"/><category term="keys"/><category term="kvm"/><category term="logs"/><category term="nc"/><category term="nodejs"/><category term="npm"/><category term="nvidia"/><category term="one-liner"/><category term="openSuSE"/><category term="openvpn"/><category term="ovirt"/><category term="password"/><category term="passwordless ssh"/><category term="php-fpm"/><category term="phpmyadmin"/><category term="port"/><category term="postfix"/><category term="print"/><category term="psql"/><category term="putty"/><category term="qemu"/><category term="rdp"/><category term="regexp"/><category term="resolv.conf"/><category term="samba"/><category term="scp"/><category term="script"/><category term="selinux"/><category term="server"/><category term="sftp"/><category term="share"/><category term="slurm"/><category term="slurm-wlm"/><category term="solaris"/><category term="subversion"/><category term="swap"/><category term="systemd-resolved"/><category term="text manipulation"/><category term="tmux"/><category term="tr"/><category term="tunnelling"/><category term="udp"/><category term="umount"/><category term="unzip"/><category term="update"/><category term="upgrade"/><category term="usb"/><category term="user management"/><category term="venv"/><category term="vi. vim"/><category term="vnc"/><category term="web-browser"/><category term="wireless"/><category term="xfs"/><category term="xrdp"/><category term="yum-utils"/><category term="zip"/><category term="7z"/><category term="DRAC"/><category term="Dell"/><category term="Dockerfile"/><category term="GlobalProtect"/><category term="NetworkManager"/><category term="access denied"/><category term="alien"/><category term="almalinux"/><category term="ani-cli"/><category term="api"/><category term="apk"/><category term="apple"/><category term="ar"/><category term="ascii art"/><category term="awk"/><category term="background"/><category term="backuppc"/><category term="barimg"/><category term="battery"/><category term="bind"/><category term="boot"/><category term="bootloader"/><category term="boxes"/><category term="brave"/><category term="brave-browser"/><category term="browser"/><category term="buffer"/><category term="cache"/><category term="cfdisk"/><category term="checksum"/><category term="cheese"/><category term="chntpw"/><category term="chrome"/><category term="chromecast"/><category term="cloud server"/><category term="cluster"/><category term="cp"/><category term="createrepo"/><category term="cron"/><category term="csr"/><category term="cuda-drivers"/><category term="cups"/><category term="cut"/><category term="cygwin"/><category term="database"/><category term="dbmail"/><category term="dimdim"/><category term="disk speed"/><category term="display"/><category term="dns checker"/><category term="docker compose"/><category term="docker playground"/><category term="domain"/><category term="domain name service"/><category term="download"/><category term="elastic stack"/><category term="elasticsearch"/><category term="elinks"/><category term="error"/><category term="exe"/><category term="exiftool"/><category term="ext2"/><category term="ext3"/><category term="fdisk"/><category term="firewalld"/><category term="flatpak"/><category term="foreground"/><category term="forticlient"/><category term="fortinet"/><category term="fortivpn"/><category term="freerdp"/><category term="gdisk"/><category term="git"/><category term="gnome mainmenu package hack"/><category term="go"/><category term="grep"/><category term="hardening"/><category term="hdparm"/><category term="header"/><category term="headers"/><category term="here-document"/><category term="hot attach"/><category term="html"/><category term="http-server"/><category term="https-proxy"/><category term="iDRAC"/><category term="ifupdown2"/><category term="image"/><category term="image2text"/><category term="imagetotext"/><category term="initramfs"/><category term="input"/><category term="ip address"/><category term="ip geolocation"/><category term="ip6tables"/><category term="iwd"/><category term="journalctl"/><category term="kernel parameters"/><category term="kernel tuning"/><category term="label"/><category term="laptop"/><category term="libinput"/><category term="linux desktop"/><category term="linux kernel modules"/><category term="live cd"/><category term="live usb"/><category term="livecd"/><category term="logical operand"/><category term="logs management"/><category term="lokkit"/><category term="lxc"/><category term="macbook pro"/><category term="maintenance"/><category term="md5"/><category term="mediainfo"/><category term="memory"/><category term="messages"/><category term="metadata"/><category term="migrate"/><category term="minio"/><category term="mkchromecast"/><category term="mpv"/><category term="mtp"/><category term="munge"/><category term="mysqldump"/><category term="named"/><category term="nano"/><category term="netbios"/><category term="netplan"/><category term="network time protocol"/><category term="nscd"/><category term="ntp"/><category term="openconnect"/><category term="openshift"/><category term="operating system"/><category term="optimization"/><category term="package manager"/><category term="panels"/><category term="parted"/><category term="pdftk"/><category term="performance tuning"/><category term="perl"/><category term="perl modules"/><category term="permission"/><category term="persistent data"/><category term="persistent live cd"/><category term="pfsense"/><category term="php.ini"/><category term="ping"/><category term="pkill"/><category term="postgres"/><category term="postgresql streaming replication"/><category term="power_supply"/><category term="precise puppy"/><category term="printer"/><category term="private key"/><category term="programming"/><category term="public ip"/><category term="puppy linux"/><category term="pv"/><category term="qemu-kvm"/><category term="qrencode"/><category term="rancheros"/><category term="rdesktop"/><category term="read write speed"/><category term="readlink"/><category term="remove background"/><category term="replica"/><category term="repositories"/><category term="repotrack"/><category term="resolvectl"/><category term="rm"/><category term="rootsh"/><category term="rotate screen"/><category term="rsa"/><category term="rsyslog"/><category term="screenshot"/><category term="serial"/><category term="sftp server"/><category term="shutter"/><category term="signal"/><category term="sleep"/><category term="snapd"/><category term="squid"/><category term="ssh-agent"/><category term="ssh-keygen"/><category term="startup"/><category term="stat"/><category term="strace"/><category term="sudo"/><category term="suse"/><category term="suspend"/><category term="svn"/><category term="synaptics"/><category term="synchronize-panes"/><category term="synology"/><category term="sysctl"/><category term="syslog"/><category term="systemd.time"/><category term="systemd.timer"/><category term="tar"/><category term="teamviewer"/><category term="teminal multiplexer"/><category term="termnal"/><category term="testssl.sh"/><category term="thinkpad"/><category term="thinkpad x260"/><category term="timezone"/><category term="tips"/><category term="tips and tricks"/><category term="top"/><category term="torrent"/><category term="touchpad"/><category term="tsocks"/><category term="tune2fs"/><category term="unix"/><category term="upower"/><category term="upstart"/><category term="vagrant"/><category term="virsh"/><category term="virtual environment"/><category term="virtual machine"/><category term="vlc"/><category term="vncserver"/><category term="volume"/><category term="vultr"/><category term="war"/><category term="webmin"/><category term="whatsapp"/><category term="wifi"/><category term="wildfly"/><category term="wireguard"/><category term="wonder tar"/><category term="wondertar"/><category term="wpa_supplicant"/><category term="wpasupplicant"/><category term="xfreerdp"/><category term="xorg"/><category term="xournal++"/><category term="xournalpp"/><category term="xrandr"/><category term="xserver"/><category term="zapzap"/><category term="zbar-tools"/><category term="zenity"/><category term="zip archive"/><category term="zombie process"/><title type='text'>linuxwave</title><subtitle type='html'>Linux is for everybody. Lets enjoy it.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.linuxwave.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>412</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-4596694760449900558</id><published>2026-02-10T11:10:00.004+08:00</published><updated>2026-02-10T11:49:57.950+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ani-cli"/><category scheme="http://www.blogger.com/atom/ns#" term="command"/><category scheme="http://www.blogger.com/atom/ns#" term="command line"/><category scheme="http://www.blogger.com/atom/ns#" term="linux mint"/><category scheme="http://www.blogger.com/atom/ns#" term="mpv"/><category scheme="http://www.blogger.com/atom/ns#" term="vlc"/><title type='text'>Watch anime from Linux command line</title><content type='html'>This is a really cool feature for anime lovers. You can search and watch anime just from the command line, how convenient is that? All the commands below were run in a Linux Mint, please adjust accordingly if you are not using Linux Mint 😁&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 1: Launch your terminal&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 2: Download and install ani-cli and mpv player&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install ani-cli mpv -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 3: Search for your favourite anime using ani-cli command. In the following example, I was searching for &quot;One Piece&quot; anime 720 video quality. If you somehow prefer vlc, you can add -v option. BY default it will use mpv video player.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ani-cli -q 720 one piece&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 4: Choose from the list, which entry (or season) that you wan to watch&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpLUmHOMxv8Ae9_9iT2q7ebFCYYt4c-1TB69UfxqK1_thazhguaR95c9EzCXBZ-MQ9mV-_vWQ6O0LVJcPJiPCn5QRkETw8qVeMri56l4rOyMSlCZQdDvKBv6CU6Ot8_XkDtjG88ao-65WkoTpml3Dpvhk2-xHJHuMDM7BKZjsf1HIbkZjDX7mvQsjFeZk&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;226&quot; data-original-width=&quot;627&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjpLUmHOMxv8Ae9_9iT2q7ebFCYYt4c-1TB69UfxqK1_thazhguaR95c9EzCXBZ-MQ9mV-_vWQ6O0LVJcPJiPCn5QRkETw8qVeMri56l4rOyMSlCZQdDvKBv6CU6Ot8_XkDtjG88ao-65WkoTpml3Dpvhk2-xHJHuMDM7BKZjsf1HIbkZjDX7mvQsjFeZk=w640-h230&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 5: Choose the episode&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQ8IAKuMj7Qtdjqn0pLV--hE9-v_KTiEchNCkRNpFGPh5x5auXijXYnlGYRVzn24UUGcFTU-4RqLMdofcw4gW3h8kKkP-Ek1Ud2Ls2SY8c9UUvoLu-_gjT7LAxaZo9ff0X1sFGesKp7T14Ts9A2xyK-jaigGF2vQ_OyG3BjLXAq3r2uVbS-nNT0CjQNVA&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;266&quot; data-original-width=&quot;216&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQ8IAKuMj7Qtdjqn0pLV--hE9-v_KTiEchNCkRNpFGPh5x5auXijXYnlGYRVzn24UUGcFTU-4RqLMdofcw4gW3h8kKkP-Ek1Ud2Ls2SY8c9UUvoLu-_gjT7LAxaZo9ff0X1sFGesKp7T14Ts9A2xyK-jaigGF2vQ_OyG3BjLXAq3r2uVbS-nNT0CjQNVA=w325-h400&quot; width=&quot;325&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 6: Watch your anime&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjgiCf8NhzC8PmvSIEaw7ckKGTSM8HkuEweE7-6zCYcBKRhydVAISOR22WXrwWFHKZmXU35FrYwNpG5VaSQnCAp1rgjWvYwqnw_0uNAbuCssdlgM75LaCP39u3XPH_po1RhiAqfvXtYXo7as70B45H-nGit39NYLYA9bRxXPpoFFH0DecyG7xrwEPwAnUw&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;731&quot; data-original-width=&quot;1273&quot; height=&quot;368&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjgiCf8NhzC8PmvSIEaw7ckKGTSM8HkuEweE7-6zCYcBKRhydVAISOR22WXrwWFHKZmXU35FrYwNpG5VaSQnCAp1rgjWvYwqnw_0uNAbuCssdlgM75LaCP39u3XPH_po1RhiAqfvXtYXo7as70B45H-nGit39NYLYA9bRxXPpoFFH0DecyG7xrwEPwAnUw=w640-h368&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Optional step: Once you know the list number and episode, you can directly go to the view by using below options:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ani-cli -q 720 -S 1 -e 1 one piece&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy watching!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/4596694760449900558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/4596694760449900558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/4596694760449900558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/4596694760449900558'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2026/02/watch-anime-from-linux-command-line.html' title='Watch anime from Linux command line'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjpLUmHOMxv8Ae9_9iT2q7ebFCYYt4c-1TB69UfxqK1_thazhguaR95c9EzCXBZ-MQ9mV-_vWQ6O0LVJcPJiPCn5QRkETw8qVeMri56l4rOyMSlCZQdDvKBv6CU6Ot8_XkDtjG88ao-65WkoTpml3Dpvhk2-xHJHuMDM7BKZjsf1HIbkZjDX7mvQsjFeZk=s72-w640-h230-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-3190827063805097830</id><published>2026-02-05T12:42:00.002+08:00</published><updated>2026-02-17T13:20:12.766+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="panels"/><category scheme="http://www.blogger.com/atom/ns#" term="split"/><category scheme="http://www.blogger.com/atom/ns#" term="vi"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><title type='text'>Using splits in vim</title><content type='html'>Using split is a way that user can open multiple documents in one vim session, but all the documents will be displayed in one display, split across the screen.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, we want to copy some content from /etc/passwd, into a file called /tmp/mylist&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. open /etc/passwd&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ vim /etc/passwd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;2. To create splits&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;to create vertical split and divide vim into 2 panels side by side, with the new panel opening /tmp/mylist&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:vsp /tmp/mylist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;To create a horizontal split and divide vim into 2 parts, bottom and up, with the new panel opening a file called /tmp/mylist, use this command&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:sp /tmp/mylist&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;You can also create an empty buffer on the new horizontally split panel&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:new&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;And to create an empty buffer on the new vertically split panel&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:vnew&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. To move between panels&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w h&lt;/span&gt; or &lt;span style=&quot;color: red;&quot;&gt;ctrl-w left arrow&lt;/span&gt; to move left&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w j &lt;/span&gt;or&lt;span style=&quot;color: red;&quot;&gt; ctrl-w down arrow&lt;/span&gt; to move down&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w k &lt;/span&gt;or&lt;span style=&quot;color: red;&quot;&gt; ctrl-w up arrow&lt;/span&gt; to move up&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w l &lt;/span&gt;or&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp; ctrl-w right arrow&lt;/span&gt; to move right&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. To close, use below commands&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;:q&lt;/span&gt; to close current panel&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;:only&lt;/span&gt; to close other panels except the current one&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;:qa&lt;/span&gt; to close all panels&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;:qa!&lt;/span&gt; to force close all panels without saving&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;5. To resize the panels&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w + &lt;/span&gt;or&lt;span style=&quot;color: red;&quot;&gt; ctrl-w -&lt;/span&gt; to increase or decrease the current panel&#39;s height&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w &amp;gt; &lt;/span&gt;or&lt;span style=&quot;color: red;&quot;&gt; ctrl-w &amp;lt;&lt;/span&gt; to increase or decrease the current panel&#39;s width&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w _&lt;/span&gt; to maximize the current panel&#39;s height&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w |&lt;/span&gt; to maximize the current panel&#39;s width&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;ctrl-w =&lt;/span&gt; to make the panels&#39; width and height uniform&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;6. To open multiple files in split mode&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;vim -o file1 file2&lt;/span&gt; to open file1 and file2 in horizontal split&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: red;&quot;&gt;vim -O file1 file2&lt;/span&gt; to open file1 and file2 in vertical split&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/3190827063805097830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/3190827063805097830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/3190827063805097830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/3190827063805097830'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2026/02/using-splits-in-vim.html' title='Using splits in vim'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-2314782597146228162</id><published>2026-02-02T12:19:00.002+08:00</published><updated>2026-02-17T12:36:31.239+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="buffer"/><category scheme="http://www.blogger.com/atom/ns#" term="vi"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><title type='text'>Using buffers in vim</title><content type='html'>Using buffer is simply a way to open multiple documents in a single vim session.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, you want to open /etc/passwd, and copy some of it contents into a new file called /tmp/mylist.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What you would do:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. open /etc/passwd&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ vim /etc/passwd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. while in vim, open a new buffer&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:e /tmp/mylist&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. To list all opened buffers, we can use :ls. This is also a way you can know the buffer number&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:ls&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. To move to a buffer number&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:b &amp;lt;buffer number&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. We can also use some part of the file name to move to the buffer that the file is opened&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;:b passwd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6. We can also use :bn to go to the next buffer in the list, or :bp to go to the previous buffer in the list&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7. To copy contents between buffer&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;highlight the text that you want to copy in the current buffer (&lt;span style=&quot;color: red;&quot;&gt;v&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;then use the usual yank (&lt;span style=&quot;color: red;&quot;&gt;y&lt;/span&gt;) to copy the highlighted texts&lt;/li&gt;&lt;li&gt;switch to the target buffer using (&lt;span style=&quot;color: red;&quot;&gt;:bp&lt;/span&gt;), (&lt;span style=&quot;color: red;&quot;&gt;:bn&lt;/span&gt;), (&lt;span style=&quot;color: red;&quot;&gt;:b number&lt;/span&gt;) or (&lt;span style=&quot;color: red;&quot;&gt;:b filename&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;paste using paste command (&lt;span style=&quot;color: red;&quot;&gt;p&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/2314782597146228162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/2314782597146228162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/2314782597146228162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/2314782597146228162'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2026/02/using-buffers-in-vim.html' title='Using buffers in vim'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-5290279924581051544</id><published>2024-11-06T08:26:00.001+08:00</published><updated>2025-02-18T08:32:45.272+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux desktop"/><category scheme="http://www.blogger.com/atom/ns#" term="rotate screen"/><category scheme="http://www.blogger.com/atom/ns#" term="xrandr"/><title type='text'>Rotating screen in Linux Desktop</title><content type='html'>Sometimes we need to capture an output of a command that is quite long, it could not fit in one screenshot. Rotating screen is one of the way to make the screen estate longer, but in linux, the method is not as straight forward as in our smartphones.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To do this, one of the method is using &quot;xrandr&quot; command.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The usage is fairly simple, just use xrandr with &quot;-o&quot; option, and which way we want to rotate the screen to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, to rotate the screen left, we use:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xrandr -o left&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To rotate the screen to right:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xrandr -o right&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To invert the screen:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xrandr -o inverted&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To rotate the screen back to its normal position:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xrandr -o normal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Do not worry though, only the screen is rotated, your keyboard and mouse still work the same.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/5290279924581051544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/5290279924581051544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/5290279924581051544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/5290279924581051544'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2024/11/rotating-screen-in-linux-desktop.html' title='Rotating screen in Linux Desktop'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-4759471807679090627</id><published>2024-10-10T09:29:00.002+08:00</published><updated>2024-10-10T15:46:41.726+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="almalinux"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="docker compose"/><title type='text'>Installing docker and docker compose on almalinux 9</title><content type='html'>Docker does not explicitly support almalinux, so we have to use centos repository instead.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below are the steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. Update system&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo dnf --refresh update&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo dnf upgrade -y&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Enable docker repository&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo dnf install yum-utils&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Install docker&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Enable and start docker&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo systemctl enable --now docker&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. Add user to docker group&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo usermod -G docker -a myuser&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6. Refresh group list&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;newgrp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7. Check docker and docker compose version&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;docker version&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;docker compose version&amp;nbsp; &amp;nbsp;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/4759471807679090627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/4759471807679090627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/4759471807679090627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/4759471807679090627'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2024/10/installing-docker-and-docker-compose-on.html' title='Installing docker and docker compose on almalinux 9'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-481411585123869227</id><published>2024-08-08T07:12:00.001+08:00</published><updated>2024-10-11T07:33:32.727+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iwd"/><category scheme="http://www.blogger.com/atom/ns#" term="linux mint"/><category scheme="http://www.blogger.com/atom/ns#" term="NetworkManager"/><category scheme="http://www.blogger.com/atom/ns#" term="wireless"/><category scheme="http://www.blogger.com/atom/ns#" term="wpa_supplicant"/><category scheme="http://www.blogger.com/atom/ns#" term="wpasupplicant"/><title type='text'>Linux Mint unable to connect to 2.4GHz wireless, but no problem connecting to 5GHz wireless</title><content type='html'>&lt;p&gt;I have this issue whereby a laptop of mine, which is running Linux Mint 21.2, was unable to connect to my 2.4GHz wife connection. I have no issue connecting to the 5GHz connection, only 2.4Ghz is having issue. I turned to linux mint forum, and found this &lt;a href=&quot;https://forums.linuxmint.com/viewtopic.php?p=1835081#p1835081&quot;&gt;post&lt;/a&gt;, which explained the issue, and the solution was to change my backend wifi device from wpa-supplicant to iwd. It seems that the current wifi daemon at that time, which was wpasupplicant was having issue connecting to 2.4GHz wifi connection.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here are the steps:&lt;/p&gt;&lt;p&gt;1. Install iwd&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install iwd -y&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Create a configuration file in /etc/NetworkManager/conf.d/wifi-backend.conf&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo nano&amp;nbsp;/etc/NetworkManager/conf.d/wifi-backend.conf&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. Add in below setting&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;[device]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;wifi.backend=iwd&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. Save and exit nano by pressing ctrl-o and then ctrl-x&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. Stop and disable wpa_supplicant daemon&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo systemctl disable --now wpa_supplicant&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. Start and enable iwd&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo systemctl enable --now iwd&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7. Restart NetworkManager daemon&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo systemctl restart NetworkManager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;And you are good&amp;nbsp; to go. You should now be able to connect to the 2.4GHz wireless, without any issue.&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/481411585123869227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/481411585123869227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/481411585123869227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/481411585123869227'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2024/08/linux-mint-unable-to-connect-to-24ghz.html' title='Linux Mint unable to connect to 2.4GHz wireless, but no problem connecting to 5GHz wireless'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-7257200615492634924</id><published>2024-07-23T16:38:00.002+08:00</published><updated>2024-07-23T16:38:55.331+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="container"/><category scheme="http://www.blogger.com/atom/ns#" term="containers"/><category scheme="http://www.blogger.com/atom/ns#" term="lxc"/><title type='text'>Linux Container (LXC) 101</title><content type='html'>&lt;div&gt;LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets users easily create and manage system or application containers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The main usage of LXC in my scenario is, to test out any application in linux before deploying to the real environment, without disturbing my host linux. I used to use virtualbox, but LXC is lighter in terms of resources usage, but only applicable to linux.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To install lxc in an ubuntu machine:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install lxc -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once installed, you now have access to multiple lxc-* commands.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiq2DkAOguQjzK6v3nxRCDdRYKRKJzMbXjT0zMoqYvFhO-c5H-kNKbCwYd3cAVX15cbOkjhgEeN6gcGRri0K8vU4VlBEJz4a4t7KK59mABS4dwgwLasIrgDJzKG93No4QeqG7d5HZyjBsknQ8ru151Z0Rl6rEQKfFN5HpwDL0XzyikXJFpjOOw5q1TLcHI&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;87&quot; data-original-width=&quot;996&quot; height=&quot;56&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiq2DkAOguQjzK6v3nxRCDdRYKRKJzMbXjT0zMoqYvFhO-c5H-kNKbCwYd3cAVX15cbOkjhgEeN6gcGRri0K8vU4VlBEJz4a4t7KK59mABS4dwgwLasIrgDJzKG93No4QeqG7d5HZyjBsknQ8ru151Z0Rl6rEQKfFN5HpwDL0XzyikXJFpjOOw5q1TLcHI=w640-h56&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;If our ufw firewall is turned on, we need to allow traffic to and from the bridge, and also allow traffic forwarded to the bridge. The name of the bridge is usually lxcbr0&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo ufw allow in on lxcbr0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo ufw route allow in on lxcbr0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo ufw route allow out on lxcbr0&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To create a container, use lxc-create command. For example, to create a container named as u1, using a template from&amp;nbsp;https://images.linuxcontainers.org/, in an interactive mode (where you get to select distribution, release and architecture interactively), use below command&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-create -n u1 -t download&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjHslBLMIa7IIsMQLXohI7SHxg6HY4XWHA6_plNEDbYZXCmXgbt9fCQkm08f3M6fMQ3V5T3QZii5cFromdPi_DvDQw7aP_PkTh4ZPssWHs1PHpEr4H-HXN78mN0N7Cdo_oc5eBX8Uh3KpDMMhHRYBkQOncC_TBTCj-hwwbRnQcMzw4EJHWxDOMy_BBIPcU&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;188&quot; data-original-width=&quot;446&quot; height=&quot;135&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjHslBLMIa7IIsMQLXohI7SHxg6HY4XWHA6_plNEDbYZXCmXgbt9fCQkm08f3M6fMQ3V5T3QZii5cFromdPi_DvDQw7aP_PkTh4ZPssWHs1PHpEr4H-HXN78mN0N7Cdo_oc5eBX8Uh3KpDMMhHRYBkQOncC_TBTCj-hwwbRnQcMzw4EJHWxDOMy_BBIPcU&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhUosYOyYHxRKsprO_gS4uZTQuknoHExAqCVZmsrOizGp4GU8_HV-hYkz3GedprIfsQOADmkwGSwiz6xFdLCFQeh4suT3s5FMsdyQqxeJKLv-d8HpUK-qL-eW374XubkUnHMO3Wf8CVyi4MI1B4NawZPFnYxF2CmigdkvA5BUCRINIuCzGiFJLZk6rSq7U&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;261&quot; data-original-width=&quot;544&quot; height=&quot;154&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhUosYOyYHxRKsprO_gS4uZTQuknoHExAqCVZmsrOizGp4GU8_HV-hYkz3GedprIfsQOADmkwGSwiz6xFdLCFQeh4suT3s5FMsdyQqxeJKLv-d8HpUK-qL-eW374XubkUnHMO3Wf8CVyi4MI1B4NawZPFnYxF2CmigdkvA5BUCRINIuCzGiFJLZk6rSq7U&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To create a same almalinux container, named u2, using a template from https://images.linuxcontainers.org/ but in a non interactive mode, use below command&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-create -n u2 -t download -- -d almalinux -r 8 -a amd64&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhu6OUoe6WTyhG0ZF4_449qmo0WAxn8RfSGc2xa-zDAHO--RoVCZLnGRUOg3EBddby0gbcRq5LC65X-EaKDh7RTA-bh--EmDBy6LL4GUSVHX_CFKHMEgDs-VP9jSYG9sDFoRDuOjiFjVPdkMKYWimj4RebBgl1OBWcuIhVqAi208QpSM6h5T__AW8vnm5g&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;107&quot; data-original-width=&quot;546&quot; height=&quot;63&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhu6OUoe6WTyhG0ZF4_449qmo0WAxn8RfSGc2xa-zDAHO--RoVCZLnGRUOg3EBddby0gbcRq5LC65X-EaKDh7RTA-bh--EmDBy6LL4GUSVHX_CFKHMEgDs-VP9jSYG9sDFoRDuOjiFjVPdkMKYWimj4RebBgl1OBWcuIhVqAi208QpSM6h5T__AW8vnm5g&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To list out all created containers, use below command&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-ls&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhINmjHZwd2-URJfuJ8zsFlJuInVJ_uOZ95RDqcm6zyFzrcf7V6W5nJVI0xDzS62jEgEfeJlG2iudy1UumWLUqRuGm0o-3_0SBEO-KwbnkOhycuzNvvzHHdeRdyKB1fb2-fJ0nspQOv92oRl4xnIOcMcTrxjNZKu-eSaCRdI4o-SAZv9dSUn-Jxkzwb_2M&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;37&quot; data-original-width=&quot;432&quot; height=&quot;27&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhINmjHZwd2-URJfuJ8zsFlJuInVJ_uOZ95RDqcm6zyFzrcf7V6W5nJVI0xDzS62jEgEfeJlG2iudy1UumWLUqRuGm0o-3_0SBEO-KwbnkOhycuzNvvzHHdeRdyKB1fb2-fJ0nspQOv92oRl4xnIOcMcTrxjNZKu-eSaCRdI4o-SAZv9dSUn-Jxkzwb_2M&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To get a better listing, use fancy mode (-f)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-ls -f&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnT3WxtMBIwQYiV2x3Av2h7vbRSCdM7iqGC3gDvi_e2Kf6D6uoKSGNMpAtjRgrRU8qqIaARvW4fxvnKmO5w7_Fgi14mzTrNcmQ2ieb9UsDL7J_UN1lbGbJvYEh4KkxpcY5mwZXUiG7ac4ASuq4JeNNSK5J9bW4wTjK-OZ2U3B90A56c2_ZUVoTpFgg85s&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;69&quot; data-original-width=&quot;442&quot; height=&quot;50&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnT3WxtMBIwQYiV2x3Av2h7vbRSCdM7iqGC3gDvi_e2Kf6D6uoKSGNMpAtjRgrRU8qqIaARvW4fxvnKmO5w7_Fgi14mzTrNcmQ2ieb9UsDL7J_UN1lbGbJvYEh4KkxpcY5mwZXUiG7ac4ASuq4JeNNSK5J9bW4wTjK-OZ2U3B90A56c2_ZUVoTpFgg85s&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To start the containers, just use lxc-start&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-start u1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-start u2&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After a while, the containers will get ip addresses&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgLlx45OW82Cne9VJVhSicvSh1g4DcSKO4kvYi-6hK4LSmI0iwQbUQuHFaIC4A0wRZ7Ug193smqbMCNlKo4txZ61BTfFaa0Mk8Ib9s1QWtzfi0Ngf3KVMKTi-v3c2tSfsTChQmLtViqrEQMjzdz3EcJIVXQQ13roEDbhBNsfb5ofMXPd8avObqP2LEqWXg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;71&quot; data-original-width=&quot;515&quot; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgLlx45OW82Cne9VJVhSicvSh1g4DcSKO4kvYi-6hK4LSmI0iwQbUQuHFaIC4A0wRZ7Ug193smqbMCNlKo4txZ61BTfFaa0Mk8Ib9s1QWtzfi0Ngf3KVMKTi-v3c2tSfsTChQmLtViqrEQMjzdz3EcJIVXQQ13roEDbhBNsfb5ofMXPd8avObqP2LEqWXg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To access the shell of the containers, we use lxc-attach&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-attach u1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbeuogE-SbRKRR0V8E6_oRgGajiO0f4Ph100AaVA5XsE5V0zhqO3YJXgADHrAt3TQ0iazwiz2zK8rED9iAF6rAyjm706cdQf4eyXXOIJ6jhU_MtXM1UdnE5XFgM8dCcFpHOhdVHTUBx7fG0OOxCjcgi2-MRlbsP6rqyHbnfvbGs8HYwIDn_8PFZOCTMdg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;38&quot; data-original-width=&quot;485&quot; height=&quot;25&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhbeuogE-SbRKRR0V8E6_oRgGajiO0f4Ph100AaVA5XsE5V0zhqO3YJXgADHrAt3TQ0iazwiz2zK8rED9iAF6rAyjm706cdQf4eyXXOIJ6jhU_MtXM1UdnE5XFgM8dCcFpHOhdVHTUBx7fG0OOxCjcgi2-MRlbsP6rqyHbnfvbGs8HYwIDn_8PFZOCTMdg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To exit the shell, just type exit&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg__7VEB_4sQG2YG1ZQ3uC6WwAmZLhYCi4YTHszC9LY_UItXQ4vWUL_yPEqB9Oqi5-7mMYdmksvkE0uc1cKotDVINFmmH4dKCHQ2ymaoYNEjVegzZ_fdS8k1A_8qVWZBeGg_dC_xL692b5bUpsRKjzhtJLecQh_SSCGE_u1wbDbq9j8KrWJ85VF8DjtbaA&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;73&quot; data-original-width=&quot;479&quot; height=&quot;49&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg__7VEB_4sQG2YG1ZQ3uC6WwAmZLhYCi4YTHszC9LY_UItXQ4vWUL_yPEqB9Oqi5-7mMYdmksvkE0uc1cKotDVINFmmH4dKCHQ2ymaoYNEjVegzZ_fdS8k1A_8qVWZBeGg_dC_xL692b5bUpsRKjzhtJLecQh_SSCGE_u1wbDbq9j8KrWJ85VF8DjtbaA&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To destroy the containers, we need to stop the container first.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-stop u1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo lxc-destroy u1&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/7257200615492634924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/7257200615492634924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7257200615492634924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7257200615492634924'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2024/07/linux-container-lxc-101.html' title='Linux Container (LXC) 101'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiq2DkAOguQjzK6v3nxRCDdRYKRKJzMbXjT0zMoqYvFhO-c5H-kNKbCwYd3cAVX15cbOkjhgEeN6gcGRri0K8vU4VlBEJz4a4t7KK59mABS4dwgwLasIrgDJzKG93No4QeqG7d5HZyjBsknQ8ru151Z0Rl6rEQKfFN5HpwDL0XzyikXJFpjOOw5q1TLcHI=s72-w640-h56-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-1705224024752491024</id><published>2024-05-22T19:40:00.010+08:00</published><updated>2024-07-23T14:36:05.774+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="7z"/><category scheme="http://www.blogger.com/atom/ns#" term="jar"/><category scheme="http://www.blogger.com/atom/ns#" term="unzip"/><category scheme="http://www.blogger.com/atom/ns#" term="zip"/><category scheme="http://www.blogger.com/atom/ns#" term="zip archive"/><title type='text'>Multiple ways to extract zip files in linux terminal</title><content type='html'>I downloaded a big zip file (5.9GB) for an application, and as usual, to unzip it, just use unzip command.&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ unzip mybigfile.zip&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I received this error, which is unusual.&lt;br /&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG7hBIGyLhoSLhHiNQ6mcVC3BZ3nOpCznACxq-LOMIAaJ0FXoNAJ9DIG_X8DjwTTAcesa4xugMpLiSt7_njRCzbwexHwUay2YBrrbnNYv44yCVmk04TI3nQ6neQ_am2R3TDDKPvxdU-mfuDTKW3jMIR6lG5XSuqOgOntAEPMZmNTYN8Lk3Vi_zsKm9N6M/s727/2024-05-22_19-24.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;143&quot; data-original-width=&quot;727&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG7hBIGyLhoSLhHiNQ6mcVC3BZ3nOpCznACxq-LOMIAaJ0FXoNAJ9DIG_X8DjwTTAcesa4xugMpLiSt7_njRCzbwexHwUay2YBrrbnNYv44yCVmk04TI3nQ6neQ_am2R3TDDKPvxdU-mfuDTKW3jMIR6lG5XSuqOgOntAEPMZmNTYN8Lk3Vi_zsKm9N6M/w640-h126/2024-05-22_19-24.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Error when extracting using unzip command&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I search around to find any other zip application that can extract the file. I am pretty confident that file is fine, since the provider has provided a md5sum file, and it matches. I ended up trying &quot;jar&quot; command. To install jar in ubuntu, simply run below command:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install fastjar -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once installed, extract the zip file using below command&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ jar xvf mybigfile.zip&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, jar is also unable to extract the file, with below error:&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2whb4L0QgfUQT3G3KIgpqcmrqV-hEaHhoBwqHW5hw_BSdVGdGI1DNlzs4jpQt5bAEPuxPqgjXlwmMs4EhZxmi7uYnswImHvpe7QUy6d9AS7BPjxCcIvppd9D9HMpFZix_bny7FQ4JXbBszIWNesx6OeBLfQ40SXmbi7CJjlAeTT4H1zmtwfkOY051DH4/s413/2024-05-22_19-30.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;36&quot; data-original-width=&quot;413&quot; height=&quot;35&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2whb4L0QgfUQT3G3KIgpqcmrqV-hEaHhoBwqHW5hw_BSdVGdGI1DNlzs4jpQt5bAEPuxPqgjXlwmMs4EhZxmi7uYnswImHvpe7QUy6d9AS7BPjxCcIvppd9D9HMpFZix_bny7FQ4JXbBszIWNesx6OeBLfQ40SXmbi7CJjlAeTT4H1zmtwfkOY051DH4/w400-h35/2024-05-22_19-30.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Error when extracting using jar command&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The I encounter another robust archiver called 7z, which can be installed in ubuntu using below command:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install 7zip -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To extract a zip file, simply run this command:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ 7z x mybigfile.zip&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even though 7z reported some error as well, but it managed to extract the file.&amp;nbsp;&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuitT3fmrvv6wpjaYcZzrhbGgEjjN2voX2akfIeXHHp3BhJliIZskebwf7FIzBkyrE0Ax9jdxupcxnPQMUqP36Ad5-KCj_8HnQrLwdmX7baxs2uf5MzYFdtndpu9j_LLdFi0tZQQQASnJ6JHv8cQQuqyxB3mn9B1rhk7BcCTA1unlY_ElUkgcEBwMjHPo/s119/2024-05-22_19-36.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;46&quot; data-original-width=&quot;119&quot; height=&quot;46&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuitT3fmrvv6wpjaYcZzrhbGgEjjN2voX2akfIeXHHp3BhJliIZskebwf7FIzBkyrE0Ax9jdxupcxnPQMUqP36Ad5-KCj_8HnQrLwdmX7baxs2uf5MzYFdtndpu9j_LLdFi0tZQQQASnJ6JHv8cQQuqyxB3mn9B1rhk7BcCTA1unlY_ElUkgcEBwMjHPo/s1600/2024-05-22_19-36.png&quot; width=&quot;119&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Error when extracting using 7z command&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There you go, 3 commands to extract a zip file. So do not worry if you are unable to extract any zip file, you can always try a few commands to get the job done.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/1705224024752491024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/1705224024752491024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1705224024752491024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1705224024752491024'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2024/05/multiple-ways-to-extrract-zip-files-in.html' title='Multiple ways to extract zip files in linux terminal'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG7hBIGyLhoSLhHiNQ6mcVC3BZ3nOpCznACxq-LOMIAaJ0FXoNAJ9DIG_X8DjwTTAcesa4xugMpLiSt7_njRCzbwexHwUay2YBrrbnNYv44yCVmk04TI3nQ6neQ_am2R3TDDKPvxdU-mfuDTKW3jMIR6lG5XSuqOgOntAEPMZmNTYN8Lk3Vi_zsKm9N6M/s72-w640-h126-c/2024-05-22_19-24.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-9151321952102058121</id><published>2023-11-30T08:52:00.012+08:00</published><updated>2024-04-09T09:06:52.972+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ascii art"/><category scheme="http://www.blogger.com/atom/ns#" term="boxes"/><title type='text'>Draws ASCII Shapes Around Text in Linux Terminal</title><content type='html'>Boxes is an application to draw boxes and shapes around text in linux terminal. For those who cannot imagine, below is one example of how boxes is used:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0h8yZXOmvOm-lh9Jrtc1ZHppv5jyXd25y9Q0bTpkkF_IMdFTK81I35a08tNnxLcLByzF1cDlGLwQC9lc9rGDfOktSKFkxPAisG9gpMaAKGjjz8NMNzo_ET-_W5RJQZXJ2nx446fF8VkuvZVIbdWdbIGXlkP2sd2jZ0jGU4dsT8qJ6GOmoJtc6sSPCb4k&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;76&quot; data-original-width=&quot;285&quot; height=&quot;53&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh0h8yZXOmvOm-lh9Jrtc1ZHppv5jyXd25y9Q0bTpkkF_IMdFTK81I35a08tNnxLcLByzF1cDlGLwQC9lc9rGDfOktSKFkxPAisG9gpMaAKGjjz8NMNzo_ET-_W5RJQZXJ2nx446fF8VkuvZVIbdWdbIGXlkP2sd2jZ0jGU4dsT8qJ6GOmoJtc6sSPCb4k=w200-h53&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To install boxes, simply run below command in any debian like linux distro:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install boxes -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To use it, simply echo any text and pipe it to boxes&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ echo &quot;this is linuxwave&quot; | boxes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Boxes comes with 59 designs by default. We can list all the styles by typing:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ boxes -l&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To use the designs, simply append -d flag, and provide the name of the design. For example, to use unicornsay style:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ echo &quot;this is linuxwave&quot; | boxes -d unicornsay&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And you will get something like this&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEikTWy71klRIOLm078oI-U7a7oR8ipwQvBXdQQWmCM3r-NYI8iXLA8ysQPS-CJuakETSYBvrFyj7xR_thq7VMGxs-4gfQOHcRmwEBthz09SPFi4yUDBvK_y7hZZUV_xTA6sJGXSnPGz7gEvWunOn9P1s-CKPXAzUdJacOTRMEGFb1ANLM07hshy8usa-bc&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;303&quot; data-original-width=&quot;667&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEikTWy71klRIOLm078oI-U7a7oR8ipwQvBXdQQWmCM3r-NYI8iXLA8ysQPS-CJuakETSYBvrFyj7xR_thq7VMGxs-4gfQOHcRmwEBthz09SPFi4yUDBvK_y7hZZUV_xTA6sJGXSnPGz7gEvWunOn9P1s-CKPXAzUdJacOTRMEGFb1ANLM07hshy8usa-bc=w400-h181&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;As usual, to know more about a command, simply use man command&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ man boxes&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/9151321952102058121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/9151321952102058121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/9151321952102058121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/9151321952102058121'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/11/draws-ascii-shapes-around-text-in-linux.html' title='Draws ASCII Shapes Around Text in Linux Terminal'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEh0h8yZXOmvOm-lh9Jrtc1ZHppv5jyXd25y9Q0bTpkkF_IMdFTK81I35a08tNnxLcLByzF1cDlGLwQC9lc9rGDfOktSKFkxPAisG9gpMaAKGjjz8NMNzo_ET-_W5RJQZXJ2nx446fF8VkuvZVIbdWdbIGXlkP2sd2jZ0jGU4dsT8qJ6GOmoJtc6sSPCb4k=s72-w200-h53-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-5934585722075594715</id><published>2023-11-20T08:30:00.045+08:00</published><updated>2024-01-02T10:27:17.879+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clustercontrol"/><category scheme="http://www.blogger.com/atom/ns#" term="clustering"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><title type='text'>Install clustercontrol v2 on ubuntu 22.04 using podman</title><content type='html'>&lt;div&gt;Clustercontrol is a database cluster management system, developed by severalnines.com, that ease up the work of database cluster deployment and management, using a nice web interface. Please follow below steps to install clustercontrol v2 using podman.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;First, install podman&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install podman -y&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Configure podman registries. Add below lines into the end of&amp;nbsp;/etc/containers/registries.conf&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;[registries.search]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;registries = [&#39;docker.io&#39;]&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pull the latest clustercontrol image&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ podman pull severalnines/clustercontrol&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create necessary directories&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ mkdir -p&amp;nbsp;clustercontrol/{backups,cmon.d,cmonlib,datadir,prom-conf,prom-data,sshkey}&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create ssh key, and save them into clustercontrol/sshkey&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ssh-keygen -t&amp;nbsp;ed25519&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;Generating public/private ed25519 key pair.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;Enter file in which to save the key (/home/myuser/.ssh/id_ed25519): /home/myuser/clustercontrol/sshkey/id_ed25519&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;Enter passphrase (empty for no passphrase):&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;Enter same passphrase again:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Start clustercontrol&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ podman run -d --name clustercontrol \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-h clustercontrol \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-p 5000:80 \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-p 5001:443 \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-p 9443:9443 \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-p 19501:19501 \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-e DOCKER_HOST_ADDRESS=192.168.10.10 \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/cmon.d:/etc/cmon.d \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/datadir:/var/lib/mysql \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/sshkey:/root/.ssh \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/cmonlib:/var/lib/cmon \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/backups:/root/backups \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/prom-data:/var/lib/prometheus \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;-v $PWD/clustercontrol/prom-conf:/etc/prometheus \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;severalnines/clustercontrol&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create username, and set password for the user&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ podman exec -it clustercontrol bash&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;#&amp;nbsp;s9s user --create --generate-key --controller=&quot;https://localhost:9501&quot; --group=admins myuser&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;#&amp;nbsp;s9s user --change-password --new-password=anypassword myuser&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Open a web browser, and browse to the ip address of the server with port 5001 for https&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhNfXcAlRgfg0MrwLk7Gmhkpt8lrf49Hk02sHEifFQoQ082uLuKqh50w9AdT_yXq5k7raDC9it0tn1Y0ieUCNNi8AEpp9lPNXTChW4pm4BzdnxxLDli49DqlG5ot8p53ow_8LmmbmtlWiZ4kebNR1847jKd_N7xg4gNSWUHaRIvEnXZOmeBZy0IL2eXyrI&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1240&quot; height=&quot;326&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhNfXcAlRgfg0MrwLk7Gmhkpt8lrf49Hk02sHEifFQoQ082uLuKqh50w9AdT_yXq5k7raDC9it0tn1Y0ieUCNNi8AEpp9lPNXTChW4pm4BzdnxxLDli49DqlG5ot8p53ow_8LmmbmtlWiZ4kebNR1847jKd_N7xg4gNSWUHaRIvEnXZOmeBZy0IL2eXyrI=w640-h326&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Login using the user and password created above&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjkNUQ7EgWuWswkS4wCztiAGNmL4BQ0XQe2d2JfsKJllShw-z2wNPpcpdcxikIqoVrwm9RxgiQ4p9Y75BNv0d0lYQ294HKw51HKvL6a3Q7UP4ZQWy3D1l4mbk1rWeQ-FeK9ebmw3AOFV1hocPwrxvlUQFmm9ma1F61fYO4j5n6XFEj2-FECcXAPJFgUcY0&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;573&quot; data-original-width=&quot;1206&quot; height=&quot;304&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjkNUQ7EgWuWswkS4wCztiAGNmL4BQ0XQe2d2JfsKJllShw-z2wNPpcpdcxikIqoVrwm9RxgiQ4p9Y75BNv0d0lYQ294HKw51HKvL6a3Q7UP4ZQWy3D1l4mbk1rWeQ-FeK9ebmw3AOFV1hocPwrxvlUQFmm9ma1F61fYO4j5n6XFEj2-FECcXAPJFgUcY0=w640-h304&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/5934585722075594715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/5934585722075594715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/5934585722075594715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/5934585722075594715'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/11/install-clustercontrol-v2-on-ubuntu.html' title='Install clustercontrol v2 on ubuntu 22.04 using podman'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhNfXcAlRgfg0MrwLk7Gmhkpt8lrf49Hk02sHEifFQoQ082uLuKqh50w9AdT_yXq5k7raDC9it0tn1Y0ieUCNNi8AEpp9lPNXTChW4pm4BzdnxxLDli49DqlG5ot8p53ow_8LmmbmtlWiZ4kebNR1847jKd_N7xg4gNSWUHaRIvEnXZOmeBZy0IL2eXyrI=s72-w640-h326-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-316946432631444729</id><published>2023-11-10T08:11:00.054+08:00</published><updated>2023-12-31T08:25:18.334+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="password"/><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="psql"/><title type='text'>Using psql without entering password</title><content type='html'>&lt;p&gt;Sometimes, we need to run psql command without entering the password, even though the account is protected with password. The usual situations are, when we are running the psql command in a script, or we have to constantly monitor the output of psql commands using watch. Here is the method on how to achieve that.&lt;/p&gt;&lt;p&gt;Create a .pgpass file inside the user&#39;s home directory who&#39;s going to access psql without password&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ touch ~/.pgpass&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Follow below format to add the user&#39;s details into pgpass&lt;/p&gt;&lt;p&gt;hostname:port:database:username:password&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ echo &quot;10.10.10.10:5432:mydatabase:myuser:mysuperlongpassword&quot; &amp;gt; ~/.pgpass&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;We can also use wildcard, such as *. If you password contains &quot;:&quot; or &quot;\&quot;, use &quot;\&quot; to escape them&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ echo &quot;*:*:mydatabase:myuser:mysuperlongpassword&quot; &amp;gt; ~/.pgpass&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;Give a proper permission to the file, nobody accept the owner of the home directory is allowed to use the file&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ chmod 0600 ~/.pgpass&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Now we should be able to use psql to mydatabase as myuser, without entering any password&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ psql -h localhost -U myuser mydatabase&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;postgres=#&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/316946432631444729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/316946432631444729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/316946432631444729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/316946432631444729'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/11/using-psql-without-entering-password.html' title='Using psql without entering password'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-6554864561919095270</id><published>2023-11-04T07:18:00.191+08:00</published><updated>2023-12-31T08:10:40.609+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="postgresql replication"/><category scheme="http://www.blogger.com/atom/ns#" term="postgresql streaming replication"/><title type='text'>Postgresql 16 streaming replication on ubuntu 22.04</title><content type='html'>&lt;div&gt;Streaming Replication is a feature in PostgreSQL that allows continuous shipping and application of WAL XLOG records to standby servers to keep them current.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is the steps to configure streaming replication using postgresql 16 on ubuntu 22.04, with one master and one slave.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, install postgresql in all nodes by referring &lt;a href=&quot;https://www.linuxwave.info/2023/11/postgresql-16-installation-on-ubuntu.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In master node, do below steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- add this configuration (uncomment wherever necessary) in /etc/postgresql/16/main/postgresql.conf. For one slave node, set max_wal_senders to 3, and add 2 for every additional slave nodes, according to &lt;a href=&quot;https://www.percona.com/blog/setting-up-streaming-replication-postgresql/&quot; target=&quot;_blank&quot;&gt;percona&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;listen_addresses = &#39;*&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;wal_level = replica&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;max_wal_senders = 3&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;- create a user for replication&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo su - postgres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@master:~$ createuser --replication -P replicauser&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;- allow replication from slave&#39;s ip address. Add below line in /etc/postgresql/16/main/pg_hba.conf, assuming our slave node&#39;s ip address is 172.17.0.4&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;host&amp;nbsp; &amp;nbsp; replication&amp;nbsp; &amp;nbsp; &amp;nbsp;replicauser&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;172.17.0.4/32&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;scram-sha-256&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;- Restart postgres&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl restart postgresql&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In slave node, do below steps:&lt;/p&gt;&lt;p&gt;- remove postgresql data directory which is /etc/postgresql/16/main (we can also rename it to save as a backup)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo su - postgres&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@slave:~$ rm -rf /etc/postgresql/16/main&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;- set a proper permission to the data directory&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@slave:~$ chmod 700&amp;nbsp;/etc/postgresql/16/main&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;- copy data from master (assuming master&#39;s ip address is 172.17.0.3)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@slave:~$ pg_basebackup -h 172.17.0.3 -U replicauser -D /var/lib/postgresql/16/main/&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;- add standby.signal file inside postgresql data directory, to tell postgresql that this is a standby node&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@slave:~$ touch /var/lib/postgresql/16/main/standby.signal&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;- add below configuration (uncomment wherever necessary) /etc/postgresql/16/main/postgresql.conf&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;listen_addresses = &#39;*&#39;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;hot_standby = on&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;primary_conninfo = &#39;host=172.17.0.3 port=5432 user=replicauser password=1&#39;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;- restart postgresql&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl restart postgresql&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Verify the replication is working&amp;nbsp;&lt;/p&gt;&lt;p&gt;- in master, check pg_stat_replication table&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo su - postgres&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres=# select client_addr, state from pg_stat_replication where usename like &#39;replicauser&#39;;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjfbwtTGbW1LsKXCRNF7NUQbQQ3smvGZ21Ses1POETKeeFMbCDeaiCBTOcdkPZR8ehG1JbDLmPggoz1mDfgRAzQlCKl4yPB_q0-otfMUpOitVAwdHJO3PPMELtNzFbsZ0lFrHkZ0Mgfn6aKxErUdoBde7oz5h4VhXZxRqfiU1xzhNqSoGe-lnc8YW-K9jE&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;89&quot; data-original-width=&quot;677&quot; height=&quot;84&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjfbwtTGbW1LsKXCRNF7NUQbQQ3smvGZ21Ses1POETKeeFMbCDeaiCBTOcdkPZR8ehG1JbDLmPggoz1mDfgRAzQlCKl4yPB_q0-otfMUpOitVAwdHJO3PPMELtNzFbsZ0lFrHkZ0Mgfn6aKxErUdoBde7oz5h4VhXZxRqfiU1xzhNqSoGe-lnc8YW-K9jE=w640-h84&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- Check if walsender process is running in master&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ps -ef | grep wal&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitak0Aemg_M8OBwMWIpBNdPJBj2kr6aS3W39Xd-ky-HAttnK-vJzn2PMWlSZHgHJi-lBaLGZ9FLBJeQC3q_ss4LYe_SkRk0T8kXF4gYKK3G6n1S5Fp2Xp1qgyZLU8pakLbath9p9tA3jWcGD_jtryj7ycAP6kLTHatN68CFcQboo_xQyVBnOdwrM3QSeQ&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;89&quot; data-original-width=&quot;675&quot; height=&quot;84&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitak0Aemg_M8OBwMWIpBNdPJBj2kr6aS3W39Xd-ky-HAttnK-vJzn2PMWlSZHgHJi-lBaLGZ9FLBJeQC3q_ss4LYe_SkRk0T8kXF4gYKK3G6n1S5Fp2Xp1qgyZLU8pakLbath9p9tA3jWcGD_jtryj7ycAP6kLTHatN68CFcQboo_xQyVBnOdwrM3QSeQ=w640-h84&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- Check if walreceiver is running in slave&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ps -ef | grep wal&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZGGONEwxXQ7wdueU8rw8qXYURVobFcZTQPB4vrBPiTv3cBWX4UNZ9PUzuZJAepJS_7QpZhnfUEevs9GWxar763YUw58HL72207fT0PhYlKvtB4UUQT_6JHMwEhA2fQrGGhkNMvwLHcxlj995vIVCUc_o76DW-jnGcli9OEBr_K6MjA3zNB9frNQCNzW8&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;54&quot; data-original-width=&quot;673&quot; height=&quot;52&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjZGGONEwxXQ7wdueU8rw8qXYURVobFcZTQPB4vrBPiTv3cBWX4UNZ9PUzuZJAepJS_7QpZhnfUEevs9GWxar763YUw58HL72207fT0PhYlKvtB4UUQT_6JHMwEhA2fQrGGhkNMvwLHcxlj995vIVCUc_o76DW-jnGcli9OEBr_K6MjA3zNB9frNQCNzW8=w640-h52&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;-&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We can also create a database in master, and verify that the same database appear in slave almost instantly .&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/6554864561919095270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/6554864561919095270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6554864561919095270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6554864561919095270'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/11/postgresql-16-streaming-replication-on.html' title='Postgresql 16 streaming replication on ubuntu 22.04'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjfbwtTGbW1LsKXCRNF7NUQbQQ3smvGZ21Ses1POETKeeFMbCDeaiCBTOcdkPZR8ehG1JbDLmPggoz1mDfgRAzQlCKl4yPB_q0-otfMUpOitVAwdHJO3PPMELtNzFbsZ0lFrHkZ0Mgfn6aKxErUdoBde7oz5h4VhXZxRqfiU1xzhNqSoGe-lnc8YW-K9jE=s72-w640-h84-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-1779386374909501958</id><published>2023-11-01T07:30:00.006+08:00</published><updated>2023-12-23T12:51:29.194+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postgres"/><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Postgresql 16 installation on ubuntu 22.04</title><content type='html'>Postgresql 16 is the latest postgresql version, released on Sept 2023. To install postgresql 16 on ubuntu 22.04, just follow below steps&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, create a postgresql repository file&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sh -c &#39;echo &quot;deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main&quot; &amp;gt; /etc/apt/sources.list.d/pgdg.list&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then, import repository signing key&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update the package list&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Install postgresql&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt install postgresql-16 -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Configure postgresql to listen on all interfaces rather than just localhost&lt;/div&gt;&lt;div&gt;- Edit /etc/postgresql/16/main/postgresql.conf&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo vi /etc/postgresql/16/main/postgresql.conf&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;- Add below configuration&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;listen_addresses = &#39;*&#39;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;- Save and exit&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Start postgresql&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl start postgresql&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enable postgresql on boot&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl enable postgresql&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Allow postgresql port (5432) on ufw&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo ufw allow 5432/tcp&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Access to postgresql database and check version&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo su - postgres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres@host:~$ psql&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;postgres=# select version();&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output should look like below&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi141ER9rASaunbPe5Np85bvFjBM7Dx1Xje_ZUO2kFhldqf_caARqiSYzhPQ93Pql03FHFhawPztgI7Cdrq9yNWjFlAadY0Z_pJumteIxCdzIfa4mOM-4IsC_OMqot3puSd1nlmgFaV0KgCrySDh4p_g5R4pWMYnzrcv_Eh_ZaJedr6jtCEa7m05v01gkY&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;145&quot; data-original-width=&quot;933&quot; height=&quot;101&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi141ER9rASaunbPe5Np85bvFjBM7Dx1Xje_ZUO2kFhldqf_caARqiSYzhPQ93Pql03FHFhawPztgI7Cdrq9yNWjFlAadY0Z_pJumteIxCdzIfa4mOM-4IsC_OMqot3puSd1nlmgFaV0KgCrySDh4p_g5R4pWMYnzrcv_Eh_ZaJedr6jtCEa7m05v01gkY=w640-h101&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Type \q to exit psql&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYS2We_B6taxLbuC8T-qtsGWVv_K6NctZJyDyEw6BMIG7nAfERXmBfdFaUd93E5Kt8EvVaVo3kzopboNvr1v93UUiZNyKOlNOkYwAmvOXRN0ExgRUymYnEEehim-YrILikC0pCpv4dDof3B4J_zm-nSVezvkBSS6JkZdYWeuAB4voth89MLVbxI2RarAY&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;105&quot; data-original-width=&quot;338&quot; height=&quot;99&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYS2We_B6taxLbuC8T-qtsGWVv_K6NctZJyDyEw6BMIG7nAfERXmBfdFaUd93E5Kt8EvVaVo3kzopboNvr1v93UUiZNyKOlNOkYwAmvOXRN0ExgRUymYnEEehim-YrILikC0pCpv4dDof3B4J_zm-nSVezvkBSS6JkZdYWeuAB4voth89MLVbxI2RarAY&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/1779386374909501958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/1779386374909501958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1779386374909501958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1779386374909501958'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/11/postgresql-16-installation-on-ubuntu.html' title='Postgresql 16 installation on ubuntu 22.04'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEi141ER9rASaunbPe5Np85bvFjBM7Dx1Xje_ZUO2kFhldqf_caARqiSYzhPQ93Pql03FHFhawPztgI7Cdrq9yNWjFlAadY0Z_pJumteIxCdzIfa4mOM-4IsC_OMqot3puSd1nlmgFaV0KgCrySDh4p_g5R4pWMYnzrcv_Eh_ZaJedr6jtCEa7m05v01gkY=s72-w640-h101-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-1723648688575698007</id><published>2023-09-29T21:33:00.020+08:00</published><updated>2024-01-17T21:42:19.471+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio/video"/><category scheme="http://www.blogger.com/atom/ns#" term="mediainfo"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>View information about audio or video files in command line</title><content type='html'>One of the command to accomplish this, is called mediainfo. It is not installed by default, so we have to install it first.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To install mediainfo in ubuntu, simply run&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install mediainfo -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once installed, we can check the information of any audio / video file using the command&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ mediainfo myfile.mp4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the information that we can get from a video file&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8QZ18jGqDCOX_rFFqixn4yLmlOF67vbVwAcPRBbOATTiyKMRf9aafWVRVsYCDG7FGOa65DOm6DrtvLqJZQ60mnfYibhZn3VegdyoJHhAygbCC6yWGjJMtNLpIFbavGjZjILYBWZ1QBv-YyH0H5RtUNdiULbb8tMJY8zLIAOcr5pa5qDOjHhZZToLoRyk&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;372&quot; data-original-width=&quot;538&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8QZ18jGqDCOX_rFFqixn4yLmlOF67vbVwAcPRBbOATTiyKMRf9aafWVRVsYCDG7FGOa65DOm6DrtvLqJZQ60mnfYibhZn3VegdyoJHhAygbCC6yWGjJMtNLpIFbavGjZjILYBWZ1QBv-YyH0H5RtUNdiULbb8tMJY8zLIAOcr5pa5qDOjHhZZToLoRyk=w400-h276&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the information that we can get from an audio file&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjTFQe5y1zoMcWhDTuJVriv5OHXBeJkMMecHBoVOAS09_zIiBd86GYdTE62lzY5crB5v49qrf7xJakVYCzq1iOrzA85tYy_8nitVr04lcC04lUdSOIBjAiU6v1mHOwZ1CZoLP51IgIK5K4ETkORDZIE-CNTIOVtVeIzbbCOd1SyCj2nGbxJd13zXebIv98&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;456&quot; data-original-width=&quot;547&quot; height=&quot;333&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjTFQe5y1zoMcWhDTuJVriv5OHXBeJkMMecHBoVOAS09_zIiBd86GYdTE62lzY5crB5v49qrf7xJakVYCzq1iOrzA85tYy_8nitVr04lcC04lUdSOIBjAiU6v1mHOwZ1CZoLP51IgIK5K4ETkORDZIE-CNTIOVtVeIzbbCOd1SyCj2nGbxJd13zXebIv98=w400-h333&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/1723648688575698007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/1723648688575698007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1723648688575698007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1723648688575698007'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/09/view-information-about-audio-or-video.html' title='View information about audio or video files in command line'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEg8QZ18jGqDCOX_rFFqixn4yLmlOF67vbVwAcPRBbOATTiyKMRf9aafWVRVsYCDG7FGOa65DOm6DrtvLqJZQ60mnfYibhZn3VegdyoJHhAygbCC6yWGjJMtNLpIFbavGjZjILYBWZ1QBv-YyH0H5RtUNdiULbb8tMJY8zLIAOcr5pa5qDOjHhZZToLoRyk=s72-w400-h276-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-117440150882689681</id><published>2023-09-21T08:25:00.034+08:00</published><updated>2024-01-15T08:32:23.303+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio/video"/><category scheme="http://www.blogger.com/atom/ns#" term="ffmpeg"/><title type='text'>Extracting audio from video using ffmpeg</title><content type='html'>To extract audio from a video, here is the command&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ffmpeg -i video.mp4 -q:a 0 -map a audio.mp4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;whereby we supply the name of our video to using -i and put the name of the audio file at the end of the command.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If we want to extract only some part of the audio from the video, we can use below command&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ffmpeg -i video.mp4 -ss 00:03:00 -t 00:00:45.0 -q:a 0 -map a audio.mp4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;where -ss is the start time of the video, that we want to extract, and -t is the duration of how much time we want to extract from the -ss time. In the above example, the output will be an audio extract from a video called video.mp4, starting from the third minute, until 45 seconds after the third minute.&amp;nbsp;&amp;nbsp;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/117440150882689681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/117440150882689681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/117440150882689681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/117440150882689681'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/09/extracting-audio-from-video-using-ffmpeg.html' title='Extracting audio from video using ffmpeg'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-9197914033172757574</id><published>2023-09-18T11:25:00.052+08:00</published><updated>2024-01-11T11:42:54.335+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alien"/><category scheme="http://www.blogger.com/atom/ns#" term="deb"/><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="Redhat"/><category scheme="http://www.blogger.com/atom/ns#" term="RPM"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Converting rpm into deb, tgz and vice versa using alien</title><content type='html'>&lt;div&gt;To convert rpm to deb, or vice versa, we can use a tool called alien. To install alien in an ubuntu machine:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt install alien -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To install alien in redhat based distro:&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo dnf install alien -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once installed, we can easily convert any rpm into deb:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo alien --to-deb myapp.rpm&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A file called myapp.deb will be created once alien finished doing its magic.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also use alien to convert deb to rpm:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo alien --to-rpm myapp.deb&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A file called myapp.rpm will be created.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also convert to tgz package:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo alien --to-tgz myapp.deb&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To generate multiple packages format:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo alien --to-rpm --to-deb myapp.tgz&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/9197914033172757574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/9197914033172757574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/9197914033172757574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/9197914033172757574'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/09/converting-rpm-into-deb-tgz-and-vice.html' title='Converting rpm into deb, tgz and vice versa using alien'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-7570297569134591751</id><published>2023-09-10T07:50:00.044+08:00</published><updated>2024-01-08T08:02:11.260+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ps"/><category scheme="http://www.blogger.com/atom/ns#" term="readlink"/><category scheme="http://www.blogger.com/atom/ns#" term="stat"/><category scheme="http://www.blogger.com/atom/ns#" term="systemd"/><title type='text'>Determine if your system is using systemd</title><content type='html'>Systemd is a suite of basic building blocks for a Linux system that provides a system and service manager that runs as PID 1 and starts the rest of the system. It works as a replacement for sysvinit.&lt;div&gt;Almost all popular distros are using systemd, but if you need to use old version of the popular distros, or simply some non popular distros, here is how you can determine whether the linux your are having is using systemd, or not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, check which process is running PID 1.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ps 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output, most of the time will be /sbin/init.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjffvn5q4Ovi5OAK-dB7e6VvqLdNFz6WsaX2eJnEKpLb5--KR75KqzUIrnPRppLgQQsupKX52z_Ee9vAYnQzhXWY-rRq1PPXGwRLqH5zGrD99TYS5Y7bGaYBzH6FEnK0fx6ZbZdha7ZVNPrPCvIuoJNzw9ygTa1SjXNsNWUms5OIWMVEGqzFZPblY8hcS0&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;50&quot; data-original-width=&quot;319&quot; height=&quot;50&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjffvn5q4Ovi5OAK-dB7e6VvqLdNFz6WsaX2eJnEKpLb5--KR75KqzUIrnPRppLgQQsupKX52z_Ee9vAYnQzhXWY-rRq1PPXGwRLqH5zGrD99TYS5Y7bGaYBzH6FEnK0fx6ZbZdha7ZVNPrPCvIuoJNzw9ygTa1SjXNsNWUms5OIWMVEGqzFZPblY8hcS0&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we need to determine if /sbin/init is a symlink to something else. There are 2 commands we can use to achieve that:&lt;/div&gt;&lt;div&gt;1. use stat&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ stat /sbin/init&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;2. use readlink&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ readlink /sbin/init&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In a systemd based system, you will be getting output showing that /sbin/init is actually a symlink to /lib/systemd/systemd, where as in other system, you will not get that output.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgr0LAkziazfzAZfg7vSMLW5CGLTQqd_cDDd_9q5wAsUtJk5SJKCRaaUcdvnuy00N7AO49USF5Nnj_kc-1LZj1FEJAvHOHfoPqLHq8k5TvM4iWEgZc1t0ZBSywqMpqCvO2JBVaOGjmJihrdPbBbRUetKjhsl8dogzX-JvpXPZxVLgOs_d5h7ZR7OqvCqHM&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;224&quot; data-original-width=&quot;594&quot; height=&quot;151&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgr0LAkziazfzAZfg7vSMLW5CGLTQqd_cDDd_9q5wAsUtJk5SJKCRaaUcdvnuy00N7AO49USF5Nnj_kc-1LZj1FEJAvHOHfoPqLHq8k5TvM4iWEgZc1t0ZBSywqMpqCvO2JBVaOGjmJihrdPbBbRUetKjhsl8dogzX-JvpXPZxVLgOs_d5h7ZR7OqvCqHM=w400-h151&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/7570297569134591751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/7570297569134591751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7570297569134591751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7570297569134591751'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/09/determine-if-your-system-is-using.html' title='Determine if your system is using systemd'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjffvn5q4Ovi5OAK-dB7e6VvqLdNFz6WsaX2eJnEKpLb5--KR75KqzUIrnPRppLgQQsupKX52z_Ee9vAYnQzhXWY-rRq1PPXGwRLqH5zGrD99TYS5Y7bGaYBzH6FEnK0fx6ZbZdha7ZVNPrPCvIuoJNzw9ygTa1SjXNsNWUms5OIWMVEGqzFZPblY8hcS0=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-3408768592411617216</id><published>2023-09-04T11:45:00.002+08:00</published><updated>2024-01-03T13:15:33.696+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="image"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><category scheme="http://www.blogger.com/atom/ns#" term="remove background"/><category scheme="http://www.blogger.com/atom/ns#" term="venv"/><title type='text'>Remove background from picture using command line</title><content type='html'>Removing a picture&#39;s background is sometimes a necessity, especially if you need the picture to integrate into other document or other picture. Here I will show how we can achieve that in linux using a python application called rembg.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, make sure we have python installed. Most linux will have it installed by default, but just check to make sure&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ python -V&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitkrVBu9Vd3mD1Jzb5MrvbsPc6yq4vankpokz8l6YncpWrqMQE7MjrjVk8XWD7hgwJ0d9n1BbGwUGKTZ646Nps-vz3VGkyt4_HRcpTwjCF0vuJ86UzhBMypG-VGVjLv9ZtsMrxohyLVZIcH8lZO9DFiopaGkMh3509sOBG4pNb7eyoY-M_NN71hzfkBTQ&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;59&quot; data-original-width=&quot;134&quot; height=&quot;52&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEitkrVBu9Vd3mD1Jzb5MrvbsPc6yq4vankpokz8l6YncpWrqMQE7MjrjVk8XWD7hgwJ0d9n1BbGwUGKTZ646Nps-vz3VGkyt4_HRcpTwjCF0vuJ86UzhBMypG-VGVjLv9ZtsMrxohyLVZIcH8lZO9DFiopaGkMh3509sOBG4pNb7eyoY-M_NN71hzfkBTQ=w119-h52&quot; width=&quot;119&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order avoid installing python libraries globally, we will create a virtual environment to keep the rembg application files. You can read more about virtual environment, by clicking &lt;a href=&quot;https://www.linuxwave.info/2023/08/installing-pythons-virtual-environment.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. So we will create a virtual environment called rembg&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ python3 -m venv rembg&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Activate the virtual environment&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ cd rembg&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ source bin/activate&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update pip&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;(rembg) $ pip install --upgrade pip&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Install rembg[cli] package&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;(rembg) $ pip install rembg[cli]&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once installed, we can use &quot;--help&quot; to see what are the options available for rembg&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ rembg --help&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we can use rembg to remove background. Let&#39;s say we have a picture called mypicture.jpg, and we want to remove its background, and save the new picture as mypicture-nobg.jpg:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;(rembg) $ rembg i mypicture.jpg mypicture-nobg.jpg&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Verify that the background has been removed in the new picture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;rembg also comes with http-server, for those who wanted a web interface to remove background from picture. Just run rembg with &quot;s&quot; flag to launch the rembg http server&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ rembg s&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A web app will be launched on http://localhost:5000, where you can upload the file to be background removed, and click submit to get the output.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi584V1WwG9b2dIZPdBFj43o-FXw7Sij-gpFa2kvMZVQY0txEQSZtXBzer-3Kg32ogxY_WhbGer99QUEreFx5MYKUzRoTWIy0-Fs14TzoUndKW3aFK-Tql1XE33iudm5g5xD4zC1HEjeY39A78540NrdT2WsVBOK3yxAAFWi2tOnQjFdamYUCqO6Y74HYk&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;692&quot; data-original-width=&quot;1222&quot; height=&quot;362&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi584V1WwG9b2dIZPdBFj43o-FXw7Sij-gpFa2kvMZVQY0txEQSZtXBzer-3Kg32ogxY_WhbGer99QUEreFx5MYKUzRoTWIy0-Fs14TzoUndKW3aFK-Tql1XE33iudm5g5xD4zC1HEjeY39A78540NrdT2WsVBOK3yxAAFWi2tOnQjFdamYUCqO6Y74HYk=w640-h362&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Simply press &quot;ctrl + c&quot; to cancel rembg&#39;s http server, when you are done.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/3408768592411617216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/3408768592411617216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/3408768592411617216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/3408768592411617216'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/09/remove-background-from-picture-using.html' title='Remove background from picture using command line'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEitkrVBu9Vd3mD1Jzb5MrvbsPc6yq4vankpokz8l6YncpWrqMQE7MjrjVk8XWD7hgwJ0d9n1BbGwUGKTZ646Nps-vz3VGkyt4_HRcpTwjCF0vuJ86UzhBMypG-VGVjLv9ZtsMrxohyLVZIcH8lZO9DFiopaGkMh3509sOBG4pNb7eyoY-M_NN71hzfkBTQ=s72-w119-h52-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-1078326007988141419</id><published>2023-08-31T10:52:00.057+08:00</published><updated>2024-01-03T11:42:42.323+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="venv"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual environment"/><title type='text'>Installing python&#39;s virtual environment in ubuntu linux</title><content type='html'>Python&#39;s virtual environment, is a way that developer can use to separate python&#39;s packages for different projects, in a single machine. The packages installed in this lightweight virtual environment, would be available in other virtual environment, thus removing the possibility of packages, org packages&#39; version clashing inside a single machine.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, we need to determine which python version is currently installed in our machine&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ python -V&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiWDY0A8Zk_-X1g48Ietm_YO0zRhgWjPJSOQJsll6207_2A7JfqN0vDMMJGVQmG_EbCiOiavptZ97e0albophB7oxfVvPjpukHrcRzgYKBySXPvrF0S1wTv6iII7z3JSD60hMizsBPVzyzC85Ysdsa33s8bBPx8pRZmOJVRnf3am0BmyNkfL6PDfAHkbG8&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;57&quot; data-original-width=&quot;125&quot; height=&quot;51&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiWDY0A8Zk_-X1g48Ietm_YO0zRhgWjPJSOQJsll6207_2A7JfqN0vDMMJGVQmG_EbCiOiavptZ97e0albophB7oxfVvPjpukHrcRzgYKBySXPvrF0S1wTv6iII7z3JSD60hMizsBPVzyzC85Ysdsa33s8bBPx8pRZmOJVRnf3am0BmyNkfL6PDfAHkbG8=w114-h51&quot; width=&quot;114&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then, we need to install python-venv&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install python3.10-venv -y&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once we have venv, we can start creating virtual environment. Let&#39;s say we wanted to have a virtual environment for a project called myproject, run this command&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ python3 -m venv myproject&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above command will create a directory called myproject, with necessary files in it. To activate the virtual environment, and start using it, we can run below commands&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ cd myproject&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ source bin/activate&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How do we know that we are already inside the virtual environment? We will see the name of the virtual environment at our bash prompt, like below&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiSOVurnY1tDJIdJhm2T1s8-POW7CoxlwVhil7p7OMOoCxUppggNsYN39VOvxxYlQMxViDcJQdLK1hbE2jYIxMxILNSpyCAeDp8Lm44d_aRkPYElFW0UcO3e3jDe2hxREpO3o8eCLHwBPAnf4j9uKa9HiMqLsWEZZF2nYb_IlhmxczoNVKxmvoMj7U52W8&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;60&quot; data-original-width=&quot;211&quot; height=&quot;57&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiSOVurnY1tDJIdJhm2T1s8-POW7CoxlwVhil7p7OMOoCxUppggNsYN39VOvxxYlQMxViDcJQdLK1hbE2jYIxMxILNSpyCAeDp8Lm44d_aRkPYElFW0UcO3e3jDe2hxREpO3o8eCLHwBPAnf4j9uKa9HiMqLsWEZZF2nYb_IlhmxczoNVKxmvoMj7U52W8=w200-h57&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can now install any package that we need inside the virtual environment using pip, and that packages can only be used if we activate &quot;myproject&quot; virtual environment&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhpBxh9oFIJwogt4TH0ddFbA3Mj8cNbWY0fKCmAfIIStTvGB3Pyx8zuhPKuMywsk0ztRf0aIhCCOM2ItoYdJD0BJDTiOANoHLs5ZKxpFAoH6fc4vEXJ2QlwMP204Z4lsR53GqQ8EtyPcqXdR2Gq7QVgGx9nnE6D8_5ct03o6wFlowvkw-a-RQXgUiHYf0Q&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;107&quot; data-original-width=&quot;196&quot; height=&quot;109&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhpBxh9oFIJwogt4TH0ddFbA3Mj8cNbWY0fKCmAfIIStTvGB3Pyx8zuhPKuMywsk0ztRf0aIhCCOM2ItoYdJD0BJDTiOANoHLs5ZKxpFAoH6fc4vEXJ2QlwMP204Z4lsR53GqQ8EtyPcqXdR2Gq7QVgGx9nnE6D8_5ct03o6wFlowvkw-a-RQXgUiHYf0Q=w200-h109&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To exit from the virtualenvironment, simply run deactivate command, and we will get back our standard bash prompt&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ deactivate&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjSN10dB5WacL_uqElWiQlLzz_QHFD-7xDO7-UwqaaaFCKvYPVRaGCmA7pF0zf625Ddxko7l62flpe1U5fezhXDHYJ7qdHWmLTu_1j5s5yIwmsclNmJiARyCTbpdsiBlpt0WNhv0T18ZnlgAUD4SNsGVgv-zrO2EP9gFJQmay81QpGOmTX8Sa4R_TX0vPs&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;37&quot; data-original-width=&quot;212&quot; height=&quot;35&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjSN10dB5WacL_uqElWiQlLzz_QHFD-7xDO7-UwqaaaFCKvYPVRaGCmA7pF0zf625Ddxko7l62flpe1U5fezhXDHYJ7qdHWmLTu_1j5s5yIwmsclNmJiARyCTbpdsiBlpt0WNhv0T18ZnlgAUD4SNsGVgv-zrO2EP9gFJQmay81QpGOmTX8Sa4R_TX0vPs=w200-h35&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/1078326007988141419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/1078326007988141419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1078326007988141419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/1078326007988141419'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/08/installing-pythons-virtual-environment.html' title='Installing python&#39;s virtual environment in ubuntu linux'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiWDY0A8Zk_-X1g48Ietm_YO0zRhgWjPJSOQJsll6207_2A7JfqN0vDMMJGVQmG_EbCiOiavptZ97e0albophB7oxfVvPjpukHrcRzgYKBySXPvrF0S1wTv6iII7z3JSD60hMizsBPVzyzC85Ysdsa33s8bBPx8pRZmOJVRnf3am0BmyNkfL6PDfAHkbG8=s72-w114-h51-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-6261477004659077101</id><published>2023-08-23T08:31:00.060+08:00</published><updated>2023-12-27T08:57:22.977+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="journalctl"/><category scheme="http://www.blogger.com/atom/ns#" term="logs"/><category scheme="http://www.blogger.com/atom/ns#" term="logs management"/><category scheme="http://www.blogger.com/atom/ns#" term="systemctl"/><category scheme="http://www.blogger.com/atom/ns#" term="systemd"/><title type='text'>Reducing disk usage by journalctl logs</title><content type='html'>Systemd is using journalctl as the log keeper for its services. The log location is at /var/log/journal.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To check the disk usage of journalctl log&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl --disk-usage&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To check the logs date, just run&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;To flush active logs to file, so it can be cleared (vacuum)&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl --flush&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To clear the log, we can use &quot;journalctl --vacuum-size&quot;. This below command will reduce the total size used by journalctl log to 1G. This command however, will only work on archived logs, and not active logs.&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl --vacuum-size=1G&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also vacuum by date, this command will remove data older than a month. Same with vacuum-size, this will work only to the archived logs.&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl --vacuum-time=1month&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also ask journalctl to rotate its log files, using --rotate. The rotation criteria can be set in /etc/systemd/journald.conf, by editing MaxFileSec and MaxRetentionSec configuration.&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo journalctl --rotate&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/6261477004659077101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/6261477004659077101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6261477004659077101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6261477004659077101'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/08/reducing-disk-usage-by-journalctl-logs.html' title='Reducing disk usage by journalctl logs'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-6459915495055757070</id><published>2023-08-15T11:26:00.057+08:00</published><updated>2023-12-26T11:43:43.869+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chrony"/><category scheme="http://www.blogger.com/atom/ns#" term="network time protocol"/><category scheme="http://www.blogger.com/atom/ns#" term="ntp"/><title type='text'>Enable server time sync in ubuntu with chrony</title><content type='html'>Chrony is an implementation of the Network Time Protocol (NTP). It is an alternative to ntpd, a reference implementation of NTP. It runs on Unix-like operating systems (including Linux and macOS) and is released under the GNU GPL v2. It is the default NTP client and server in Red Hat Enterprise Linux 8 and SUSE Linux Enterprise Server 15, and available in many Linux distributions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To enable chrony in ubuntu, we can install it first&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install chrony -y&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Start chrony once it is installed&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl start chrony&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Enable chrony on boot&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo systemctl enable chrony&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;We can change the server that chrony sync from, by editing /etc/chrony/chrony.conf. By default, chrony in ubuntu will use ntp.ubuntu.com&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinet_cRUFYGWJO-XN778R-SCoRuLSnLqAO51v1Yi4EH7iIUBjtvkN2qXbVkBEBqSsgRD0sQ2xtqm2qWxlHwkdBfc3lyk7wOD8U5isadiMDQ6IK9dZ9Hm7QImb5nWxaLjX6AeaU5SykLlSrohPLOUmdbgABx19kSBL1kOsdgtWi3dua7_xpaAWH1Kl_5eI&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;70&quot; data-original-width=&quot;393&quot; height=&quot;71&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEinet_cRUFYGWJO-XN778R-SCoRuLSnLqAO51v1Yi4EH7iIUBjtvkN2qXbVkBEBqSsgRD0sQ2xtqm2qWxlHwkdBfc3lyk7wOD8U5isadiMDQ6IK9dZ9Hm7QImb5nWxaLjX6AeaU5SykLlSrohPLOUmdbgABx19kSBL1kOsdgtWi3dua7_xpaAWH1Kl_5eI=w400-h71&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To check the status of time sync&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo chronyc sources -v&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJWrJnbdWM5_qyTmvHFbmmGICAYic6Wc5NDOKXEGefjTRELPAF_YH-Kcl49ax_VdUS_u8ooWFh1ZF8LozbYOw5V_i18cb41Gr-yskcvUVjWDnwGxF_D5qSCI4Z5EIvvK3vTpgu2D1u4sk6c9XHBgDZkmSsm1d18Gwb0AQCr601GkiOAaPKecDWMyNmrnw&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;344&quot; data-original-width=&quot;656&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJWrJnbdWM5_qyTmvHFbmmGICAYic6Wc5NDOKXEGefjTRELPAF_YH-Kcl49ax_VdUS_u8ooWFh1ZF8LozbYOw5V_i18cb41Gr-yskcvUVjWDnwGxF_D5qSCI4Z5EIvvK3vTpgu2D1u4sk6c9XHBgDZkmSsm1d18Gwb0AQCr601GkiOAaPKecDWMyNmrnw=w640-h336&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can see that from the above example, the current best source of time is 144.126.242.176.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Make sure there is at least one server with ^* status.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the time is skewed, we can force resync using below command&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo chronyc makestep&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;To install and configure chrony in redhat based linux, please refer to &lt;a href=&quot;https://www.linuxwave.info/2019/05/update-time-and-date-using-chrony.html&quot; target=&quot;_blank&quot;&gt;this article&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/6459915495055757070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/6459915495055757070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6459915495055757070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6459915495055757070'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/08/enable-server-time-sync-in-ubuntu-with.html' title='Enable server time sync in ubuntu with chrony'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEinet_cRUFYGWJO-XN778R-SCoRuLSnLqAO51v1Yi4EH7iIUBjtvkN2qXbVkBEBqSsgRD0sQ2xtqm2qWxlHwkdBfc3lyk7wOD8U5isadiMDQ6IK9dZ9Hm7QImb5nWxaLjX6AeaU5SykLlSrohPLOUmdbgABx19kSBL1kOsdgtWi3dua7_xpaAWH1Kl_5eI=s72-w400-h71-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-166883645577576079</id><published>2023-08-08T11:11:00.122+08:00</published><updated>2023-12-25T14:43:46.035+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel parameters"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="sysctl"/><title type='text'>Tuning kernel parameters in linux</title><content type='html'>For most people, the kernel provided with our favorite linux distro is good enough for daily use. But for some other people, they need more performance out of their linux machine, so they need to tune some kernel parameters, to suit whatever need they have in their hands.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;We can add the parameter to the kernel runtime (would not survive reboot) by using sysctl command&lt;/div&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl &amp;lt;tunable class&amp;gt;.&amp;lt;tunable&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;To make the change permanent, we can add the kernel parameter to /etc/sysctl.conf or /etc/sysctl.d/filename.conf (best practice) by using any text editor&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also add the parameter by using&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -w &amp;lt;tunable class&amp;gt;.&amp;lt;tunable&amp;gt; &amp;gt;&amp;gt; /etc/sysctl.conf&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -w &amp;lt;tunable class&amp;gt;.&amp;lt;tunable&amp;gt; &amp;gt;&amp;gt; /etc/sysctl.d/filename.conf&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;Load kernel parameters from /etc/sysctl.conf or /etc/sysctl.d/filename.conf&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -p&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -p /etc/sysctl.d/filename.conf&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;We can also load from all system configuration files. System configuration files are /etc/sysctl.d/*.conf, /run/sysctl.d/*.conf, /usr/local/lib/sysctl.d/*.conf, /usr/lib/sysctl.d/*.conf, /lib/sysctl.d/*.conf and /etc/sysctl.conf&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl --system&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;View all the kernel parameters currently available by using&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -a&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;We can also set pattern for the displayed results. For example,&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo sysctl -a --pattern &#39;kernel&#39;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;What are the available tunable classes? According to Red Hat, these are the ones available in RHEL.&lt;/p&gt;&lt;p&gt;- abi: execution domain and personalities&amp;nbsp;&lt;/p&gt;&lt;p&gt;- crypto: cryptographic interfaces&lt;/p&gt;&lt;p&gt;- debug: kernel debugging interfaces&lt;/p&gt;&lt;p&gt;- dev: device specific information&lt;/p&gt;&lt;p&gt;- fs: global and specific filesystem tunables&lt;/p&gt;&lt;p&gt;- kernel: global kernel tunables&lt;/p&gt;&lt;p&gt;- net: network tunables&lt;/p&gt;&lt;p&gt;- sunrpc: sun remote procedure calls (NFS)&lt;/p&gt;&lt;p&gt;- user: user namespace limits&lt;/p&gt;&lt;p&gt;- vm: tuning and management of memory, buffer and cache&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;How to get information about the tunables and its usage? Refer to&amp;nbsp;&lt;a href=&quot;https://www.kernel.org/doc/Documentation/&quot;&gt;https://www.kernel.org/doc/Documentation/&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/166883645577576079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/166883645577576079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/166883645577576079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/166883645577576079'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/08/tuning-kernel-parameters-in-linux.html' title='Tuning kernel parameters in linux'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-6742965572288709757</id><published>2023-08-01T07:50:00.026+08:00</published><updated>2023-12-19T08:53:55.341+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="input"/><category scheme="http://www.blogger.com/atom/ns#" term="libinput"/><category scheme="http://www.blogger.com/atom/ns#" term="linux mint"/><category scheme="http://www.blogger.com/atom/ns#" term="synaptics"/><category scheme="http://www.blogger.com/atom/ns#" term="thinkpad"/><category scheme="http://www.blogger.com/atom/ns#" term="thinkpad x260"/><category scheme="http://www.blogger.com/atom/ns#" term="touchpad"/><category scheme="http://www.blogger.com/atom/ns#" term="xorg"/><category scheme="http://www.blogger.com/atom/ns#" term="xserver"/><title type='text'>Lenovo Thinkpad X260 touchpad scrolling not smooth in Linux Mint 21.2</title><content type='html'>I just installed Linux Mint 21.2 onto a Lenovo Thinkpad X260. Everything is good, except that the scrolling using the touchpad is not smooth. After reading around, some people suggested to change the drive to synaptics, instead of the default libinput. Here is how to achieve that:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Get the id of the touchpad&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xinput list | grep -i touchpad&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Check properties of the touchpad, my id for the touchpad is 11, the id might differ. You should be seeing a lot of libinput inside the output (refer picture), to show that the touchpad is using libinput driver&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xinput list-props 11&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can also determine which driver is being used, by using below command&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ grep -i &quot;using input&quot; /var/log/Xorg.0.log &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; /&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Install synaptics driver&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo apt update &amp;amp;&amp;amp; sudo apt install&amp;nbsp;xserver-xorg-input-synaptics -y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Logout and log in to switch the driver from libinput to synaptics &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhubtf0QVu-WI-g_lylb3Q1KIEwvqangnCZWQAW7Lhv2udf3MGnlSbI3F3x7IpD1yzXkyeCAYf9i_o_w_GlU1V7Mj1E9HNmXV80HvxDi2LSEaZWcd3XMEw4jIo49gxMLYX8YkHt4gTSunn_WI4Vymc5O5lco_HsgceDyh8-uCCQ2cBxfIAbhXLScNVbKAA&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;576&quot; data-original-width=&quot;603&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhubtf0QVu-WI-g_lylb3Q1KIEwvqangnCZWQAW7Lhv2udf3MGnlSbI3F3x7IpD1yzXkyeCAYf9i_o_w_GlU1V7Mj1E9HNmXV80HvxDi2LSEaZWcd3XMEw4jIo49gxMLYX8YkHt4gTSunn_WI4Vymc5O5lco_HsgceDyh8-uCCQ2cBxfIAbhXLScNVbKAA=w320-h306&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check the driver again, you should see a lot of synaptics, like below&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ xinput list-props 11&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMimX-L7lpy2stLgrQvDTo3IVvSl08BEsewrsArIgw690SkvkO_q-RFaNjCD6VVo9cDNgEOxGTIJGs1qdh8CwV1Nhf-6Y-kDjmjABn7_Zdae9nhGwyYp1mgoTAGNpFC5sRv8zBpUZmEHzFUwwSLku2jMSRgF87COXVIQSBXIspQ2MGpb_6DNPx91DVUOU&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMimX-L7lpy2stLgrQvDTo3IVvSl08BEsewrsArIgw690SkvkO_q-RFaNjCD6VVo9cDNgEOxGTIJGs1qdh8CwV1Nhf-6Y-kDjmjABn7_Zdae9nhGwyYp1mgoTAGNpFC5sRv8zBpUZmEHzFUwwSLku2jMSRgF87COXVIQSBXIspQ2MGpb_6DNPx91DVUOU&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;259&quot; data-original-width=&quot;434&quot; height=&quot;239&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMimX-L7lpy2stLgrQvDTo3IVvSl08BEsewrsArIgw690SkvkO_q-RFaNjCD6VVo9cDNgEOxGTIJGs1qdh8CwV1Nhf-6Y-kDjmjABn7_Zdae9nhGwyYp1mgoTAGNpFC5sRv8zBpUZmEHzFUwwSLku2jMSRgF87COXVIQSBXIspQ2MGpb_6DNPx91DVUOU=w400-h239&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Your scrolling with touchpad will be much better compared to the previous driver.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;With both synaptics and libinput installed, synaptics will take priority.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;If you want to change back to libinput, simply uninstall synaptics&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;blockquote&gt;$ sudo apt remove xserver-xorg-input-synaptics&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Then logout and log in again to activate libinput.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/6742965572288709757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/6742965572288709757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6742965572288709757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6742965572288709757'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/08/thinkpad-x260-not-smooth-scrolling.html' title='Lenovo Thinkpad X260 touchpad scrolling not smooth in Linux Mint 21.2'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhubtf0QVu-WI-g_lylb3Q1KIEwvqangnCZWQAW7Lhv2udf3MGnlSbI3F3x7IpD1yzXkyeCAYf9i_o_w_GlU1V7Mj1E9HNmXV80HvxDi2LSEaZWcd3XMEw4jIo49gxMLYX8YkHt4gTSunn_WI4Vymc5O5lco_HsgceDyh8-uCCQ2cBxfIAbhXLScNVbKAA=s72-w320-h306-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-7702907124257441181</id><published>2023-07-27T15:41:00.037+08:00</published><updated>2023-12-18T15:55:19.878+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><title type='text'>Delete iptables rule using line number</title><content type='html'>To easiest way to delete iptables rules, is by listing the rule with line number like below&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo iptables -L OUTPUT --line-number&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this example, we are listing all the rules inside OUTPUT chain, with line number&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhss9O3U7djaSXC5116OdHPYR8Ue0nEyQByZ2NXN8BVnkG8api7r2OadED4TDiUeaI04qefzklSjQAiXX5HnYp1cbRjKSIiLzcxkEHwfKZv-a_-he8W3FGLTLr0n6s6CGuObd3UUG26sqXaYmj7w4tGAUBIL8YpPI0WkXehvWr3o2KjZMjmcoueyPRqkhg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;77&quot; data-original-width=&quot;620&quot; height=&quot;50&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhss9O3U7djaSXC5116OdHPYR8Ue0nEyQByZ2NXN8BVnkG8api7r2OadED4TDiUeaI04qefzklSjQAiXX5HnYp1cbRjKSIiLzcxkEHwfKZv-a_-he8W3FGLTLr0n6s6CGuObd3UUG26sqXaYmj7w4tGAUBIL8YpPI0WkXehvWr3o2KjZMjmcoueyPRqkhg=w400-h50&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;To delete that rule, use this command&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo iptables -D OUTPUT 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;like below&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnP-AwJNweJbPmzuGFcra-46NbIChuIsq86lMtoJyHOwBWwbH8hdzZlx9AMbSdakFawRq5r1qK2uT-xTLINHRYho9z3Lwl2Yhj3AUb6I0YT_eZkt-pvaYvEqkX3xWGORPYeNOj0sERfQ3BSOQJ4u6e_4cyJzyJ1EXiSbxXfP2sH_LRmvHzIPH1h3tO3m4&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;42&quot; data-original-width=&quot;286&quot; height=&quot;29&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnP-AwJNweJbPmzuGFcra-46NbIChuIsq86lMtoJyHOwBWwbH8hdzZlx9AMbSdakFawRq5r1qK2uT-xTLINHRYho9z3Lwl2Yhj3AUb6I0YT_eZkt-pvaYvEqkX3xWGORPYeNOj0sERfQ3BSOQJ4u6e_4cyJzyJ1EXiSbxXfP2sH_LRmvHzIPH1h3tO3m4=w200-h29&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can run the first command to verify that the rule has been deleted&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ sudo iptables -L OUTPUT --line-number&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;like below&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQJwq9DFNfe3DZbBRc2gxH_KjpcB-956-ZMMYe8V5CS7G010U56Iczu9TP3oRzlvaJAnMEzK6gb2MCd19Uy7QMujutIBRwCD8jrWxcKb1B76K4jFWQg8zA10l9sF1vNWzmN7sXCqEPk2ycN7alAlc1gjCetdtrHxVIn89wodtVFqdsKavbUAcFIWiyOyE&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;62&quot; data-original-width=&quot;575&quot; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhQJwq9DFNfe3DZbBRc2gxH_KjpcB-956-ZMMYe8V5CS7G010U56Iczu9TP3oRzlvaJAnMEzK6gb2MCd19Uy7QMujutIBRwCD8jrWxcKb1B76K4jFWQg8zA10l9sF1vNWzmN7sXCqEPk2ycN7alAlc1gjCetdtrHxVIn89wodtVFqdsKavbUAcFIWiyOyE=w400-h44&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To delete multiple rules, just repeat the same steps over and over again.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/7702907124257441181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/7702907124257441181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7702907124257441181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/7702907124257441181'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/07/delete-iptables-rule-using-line-number.html' title='Delete iptables rule using line number'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhss9O3U7djaSXC5116OdHPYR8Ue0nEyQByZ2NXN8BVnkG8api7r2OadED4TDiUeaI04qefzklSjQAiXX5HnYp1cbRjKSIiLzcxkEHwfKZv-a_-he8W3FGLTLr0n6s6CGuObd3UUG26sqXaYmj7w4tGAUBIL8YpPI0WkXehvWr3o2KjZMjmcoueyPRqkhg=s72-w400-h50-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2150109385261698170.post-6511458538767442493</id><published>2023-07-22T08:28:00.002+08:00</published><updated>2023-12-17T08:48:14.247+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="brave"/><category scheme="http://www.blogger.com/atom/ns#" term="brave-browser"/><category scheme="http://www.blogger.com/atom/ns#" term="linux mint"/><title type='text'>Brave browser failed to load in Linux Mint due to a locked profile</title><content type='html'>The issue is, whenever we click on the brave browser logo, it will show a loading animation, and it won&#39;t start after a few seconds.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To troubleshoot this, I launch brave using terminal by running below command:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ brave-browser&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I can see an error, which is&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;&quot;[3056:3056:1217/082602.062706:ERROR:process_singleton_posix.cc(353)] The profile appears to be in use by another Brave process (2300) on another computer (hisham-workmachine). Brave has locked the profile so that it doesn&#39;t get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Brave.&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;I just found out that the error happened when I changed my hostname.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To recover brave, we just need to unlock the profile, by removing in ~/.config/BraveSoftware/Brave-Browser/SingletonLock. I usually will just rename it, and not deleting it, just in case.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ cd ~/.config/BraveSoftware/Brave-Browser/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;$ mv SingletonLock SingletonLock.0&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We should be able to launch brave now&amp;nbsp;😁&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRKon_VrhnKoUgAASsNdGV_yWBNb0OUCjqoIU7wc5nPm9HNZDwoPq47WgGg5s_3Y34w3KKFVIGgS6cBCiOGtnKwyva5KF38xg32UmMaekIFbk2h2_dGlTu-j27TmfTUWaq9a2qJzkBH_65aR2AsqX9E8J7XULEEZ4BQBM9BQPyPQQhRO9o-sNPmopzNvo&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;204&quot; data-original-width=&quot;1020&quot; height=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhRKon_VrhnKoUgAASsNdGV_yWBNb0OUCjqoIU7wc5nPm9HNZDwoPq47WgGg5s_3Y34w3KKFVIGgS6cBCiOGtnKwyva5KF38xg32UmMaekIFbk2h2_dGlTu-j27TmfTUWaq9a2qJzkBH_65aR2AsqX9E8J7XULEEZ4BQBM9BQPyPQQhRO9o-sNPmopzNvo=w640-h128&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.linuxwave.info/feeds/6511458538767442493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2150109385261698170/6511458538767442493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6511458538767442493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2150109385261698170/posts/default/6511458538767442493'/><link rel='alternate' type='text/html' href='http://www.linuxwave.info/2023/07/brave-browser-failed-to-load-in-linux.html' title='Brave browser failed to load in Linux Mint due to a locked profile'/><author><name>Hisham</name><uri>http://www.blogger.com/profile/02134722812269928737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhRKon_VrhnKoUgAASsNdGV_yWBNb0OUCjqoIU7wc5nPm9HNZDwoPq47WgGg5s_3Y34w3KKFVIGgS6cBCiOGtnKwyva5KF38xg32UmMaekIFbk2h2_dGlTu-j27TmfTUWaq9a2qJzkBH_65aR2AsqX9E8J7XULEEZ4BQBM9BQPyPQQhRO9o-sNPmopzNvo=s72-w640-h128-c" height="72" width="72"/><thr:total>0</thr:total></entry></feed>