Código
Fragmentos de código útiles y gists
DevOps Terminal Management
bashBest practices and tools for managing terminals in DevOps workflows, including multiplexers, remote sessions, container tools, and shell customization
# ============================================# DEVOPS TERMINAL MANAGEMENT# ============================================
# --- 1. TERMINAL MULTIPLEXERS ---
# Tmux basicstmux new -s mysession # Create new sessiontmux attach -t mysession # Attach to sessiontmux detach # Detach from session (Ctrl+b, d)tmux ls # List sessionstmux kill-session -t mysession # Kill session
# Tmux key bindings (prefix: Ctrl+b)# c New window# n/p Next/previous window# % Split vertical# " Split horizontal# o Switch pane# x Kill pane# [ Scroll mode (q to quit)
# Screen basicsscreen -S mysession # Create new sessionscreen -r mysession # Reattachscreen -ls # List sessions# Detach: Ctrl+a, d
# --- 2. SHELL CUSTOMIZATION ---
# .bashrc / .zshrc essentialsexport HISTSIZE=100000export HISTFILESIZE=200000export HISTCONTROL=ignoredups:erasedupsexport EDITOR=vimexport VISUAL=vim
# Useful aliasesalias ll='ls -alF --color=auto'alias la='ls -A --color=auto'alias l='ls -CF --color=auto'alias ..='cd ..'alias ...='cd ../..'alias grep='grep --color=auto'alias fgrep='fgrep --color=auto'alias egrep='egrep --color=auto'alias h='history'alias ports='netstat -tulanp'alias meminfo='free -h -l -t'alias df='df -Th'alias du='du -sh'
# Git aliasesalias gs='git status'alias ga='git add'alias gc='git commit'alias gp='git push'alias gl='git pull'alias gd='git diff'alias gco='git checkout'alias gb='git branch'alias glo='git log --oneline --graph'
# --- 3. REMOTE SERVER MANAGEMENT ---
# SSH essentialsssh user@hostnamessh -p 2222 user@hostname # Custom portssh -i ~/.ssh/key.pem user@host # Key-based authssh -A user@host # Agent forwardingssh -L 8080:localhost:80 user@host # Port forwardingssh -J jumpuser@jumphost user@target # Jump host
# SSH config (~/.ssh/config)# Host myserver# HostName 192.168.1.100# User admin# Port 2222# IdentityFile ~/.ssh/mykey# ServerAliveInterval 60# ServerAliveCountMax 3
# SSH agenteval $(ssh-agent -s)ssh-add ~/.ssh/id_rsassh-add -l # List keys
# --- 4. CONTAINER TOOLS ---
# Docker shortcutsalias d='docker'alias dc='docker compose'alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'alias dlogs='docker logs -f'alias dstats='docker stats'alias dprune='docker system prune -af'alias dexec='docker exec -it'
# Kubernetes shortcutsalias k='kubectl'alias kg='kubectl get'alias kd='kubectl describe'alias kdel='kubectl delete'alias kaf='kubectl apply -f'alias klogs='kubectl logs -f'alias kexec='kubectl exec -it'alias kctx='kubectl config current-context'alias kns='kubectl config set-context --current --namespace'
# Watch resourceswatch -n 1 kubectl get podswatch -n 1 docker ps
# --- 5. LOG MONITORING ---
# tail / journalctltail -f /var/log/syslogtail -f /var/log/nginx/access.log | grep ERRORjournalctl -u myservice -fjournalctl --since "1 hour ago"journalctl -u myservice --since today --until "2 hours ago"
# Multi-file log tailingmultitail /var/log/nginx/access.log /var/log/nginx/error.log
# --- 6. PROCESS MANAGEMENT ---
# Process monitoringps aux | grep process_namepgrep -f process_namepkill -f process_namelsof -i :8080 # What's using port 8080fuser -k 8080/tcp # Kill process on port
# System resourceshtop # Interactive process vieweriotop # I/O monitoringnload # Network loadiftop # Network connectionsdstat --cpu --mem --net --disk # System statssar -u 1 10 # CPU usage every 1s, 10 times
# --- 7. FILE OPERATIONS ---
# rsync for transfersrsync -avz --progress /local/path user@host:/remote/pathrsync -avz --delete /source/ /dest/ # Sync with deletion
# tar archivingtar -czvf archive.tar.gz /path/to/dir # Createtar -xzvf archive.tar.gz # Extracttar -tzvf archive.tar.gz # List contents
# findfind /var/log -name "*.log" -mtime +7 -deletefind . -type f -size +100Mfind / -type f -newer /tmp/reference_file
# --- 8. NETWORK TOOLS ---
# Quick checkscurl -I https://example.com # Headers onlycurl -o /dev/null -s -w "%{http_code}\n" https://example.comnc -zv host port # Port checkss -tuln # Listening socketsss -tulnp # With process namesdig +short example.com # DNS lookuptraceroute example.com # Route tracemtr example.com # Advanced traceroute
# --- 9. TEXT PROCESSING ---
# jq for JSONcat file.json | jq '.items[] | {name: .name, status: .status}'kubectl get pods -o json | jq '.items[].metadata.name'
# yq for YAMLyq '.services.web.ports' docker-compose.ymlyq -i '.services.web.image = "nginx:latest"' docker-compose.yml
# Common pipelinesgrep ERROR /var/log/app.log | awk '{print $1, $2, $5}' | sort | uniq -c | sort -rnps aux | awk '{print $2, $4, $11}' | sort -k2 -rn | head -20
# --- 10. SAFETY & BEST PRACTICES ---
# Safer rmalias rm='rm -i'# Or use trash-cli# alias rm='trash-put'
# Confirm destructive operationsset -o noclobber # Prevent > overwriteshopt -s histverify # Verify history expansion
# Exit on error in scriptsset -euo pipefail
# Dry runsrsync -avzn --dry-run /source/ /dest/ # rsync dry runterraform plan # Preview changeskubectl diff -f manifest.yaml # Preview k8s changes