Essential Linux & CLI Mastery for Senior Java Engineers
Complete practical guide and quick-reference commands for day-to-day backend engineering work.
A. Foundations of Linux
Filesystem Hierarchy
- /etc – config files
- /var/log – logs
- /opt – optional software (great for JARs)
Paths
cd /opt/apps # absolute path
cd ../logs # relative path
Navigation Commands
ls -la
pwd
tree -L 2
B. File & Directory Operations
Copy, Move, Remove
cp -rv target/*.jar /opt/apps/
mv app.log logs/
rm -rf temp/
Compression
tar -czvf backup.tar.gz /opt/apps/
Compare
diff application.yml application-prod.yml
vimdiff settings.xml settings-dev.xml
C. Search & Filtering
Find Stacktraces, Configs, Keys
grep -i exception logs/app.log
find /var -name "*.yml"
locate application.properties
xargs -a services.txt grep -H 'timeout'
Pipelines
cat log.txt | grep ERROR | cut -d' ' -f5- | sort | uniq -c
D. Text Processing
Practical Usage
cut -d":" -f1 /etc/passwd
awk '{print $2, $5}' performance.csv
sed 's/localhost/127.0.0.1/g' config.yml
Tail Logs Live
tail -f /var/log/spring.log | grep WARN
E. Working With Processes
List and Kill
ps aux | grep java
kill -9 <PID>
lsof -i :8080
F. Networking Tools
API Testing
curl -X POST http://localhost:8080/api -d '{"test":true}'
wget https://repo.maven.org/artifact.jar
Ports & DNS
netstat -tulnp
ping google.com
traceroute github.com
G. Permissions & Users
chmod +x deploy.sh
chown appuser:app logs/
sudo ./restart.sh
H. Bash Shell Essentials
alias mvnclean='mvn clean install'
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
echo $PATH
I. SSH, SFTP & rsync
ssh user@server
scp build/libs/app.jar user@server:/opt/apps
rsync -avz /var/log/ user@host:/data/logs
J. Systemd & Services
sudo systemctl start spring-app
sudo systemctl stop spring-app
journalctl -u spring-app -f
K. Docker & Container CLI
docker ps
docker logs container
docker exec -it container bash
docker inspect container
L. Git Bash Essentials
git log --oneline
git diff
git stash
git checkout -b feature-x
git mergetool
M. Final Cheat Sheet
| Command | Purpose | Example |
|---|---|---|
lsof -i :8080 | Check which PID uses a port | lsof -i :8080 |
tail -f app.log | grep ERROR | Live error logs | tail -f /var/log/app.log |
find / -name "*.jar" | Find all JARs | find /opt -name "*.jar" |
N. Real Java Scenarios
- Find what’s using port 8080 →
lsof -i :8080 - Tail Spring logs live →
tail -f spring.log - Search huge log without loading →
grep Exception big.log - Copy logs between servers →
rsync -avz /logs user@host:/backup - Kill hung Spring app →
pkill -f spring - Check memory usage →
free -h - View running containers →
docker ps - View CPU usage →
top