Snippet Bash
With snippet Bash, you can free your mind
Kill process
.---------- PID | tomcat 17782 0.6 8.0 3691108 1247720 ? Sl Jul08 11:38 /usr/lib/jvm/jre/bin/java kill [signal] PID kill -15 PID kill -9 PID kill -SIGTERM PID kill [options] -SIGTERM PID
SIGHUP (1) - Hangup detected on controlling terminal or death of controlling process. Use SIGHUP to reload configuration files and open/close log files.
SIGKILL (9) - Kill signal. Use SIGKILL as a last resort to kill process. This will not save data or cleaning kill the process.
SIGTERM (15) - Termination signal. This is the default and safest way to kill process.
Kill background jobs
./script & [1] 35341 jobs -l [1]+ 35341 Running ./script & kill $! # $! expands to the PID of the last process executed in the background kill %1 kill %% # most recent background job
Kill all process by name/pattern
pkill -f process_name
Show why linux kill process
dmesg | egrep -i -B100 'killed process'
Check reboot required
# check file /var/run/reboot-required exists or not ls /var/run/reboot-required file /var/run/reboot-required stat /var/run/reboot-required
Find last reboot time
# check who is logged on who –b # last logged in user and system last reboot time (/var/log/wtmp) last reboot | head -1 # systems last shutdown time last -x|grep shutdown | head -1 # -x: display system shutdown info and run level change
Finding the size of a directory
du -sh du -sh /* du -sh /tmp /var du -sh s* # -s summary of the directory size # -h human readable format # -a displays the filenames along with the directory names in the output # -S excluding the size of the subdirectories that exist within that directory # --exculde=mp3 exclude all the files having the given pattern present in their filenames # /* simply expands to all directories (and files) in /
Finding the disk free space
df df -h # -h human readable format
Use
sar -r
to monitoring Linux memory# install sudo yum install sysstat # configure sudo vi /etc/cron.d/sysstat # monitor memory usage sar -r sar -r X Y # display every X second(s) for Y time(s) sar -r -f /var/log/sa/saXX # display daily summary report, XX is the day of the month
Change modification time of linux files
# touch [OPTION]... FILE... # -a, change the access time only # -c, if the file does not exist, do not create it # -d, update the access and modification times # -m, change the modification time only # -r, use the access and modification times of file # -t, creates a file using a specified time touch -d "2 hours ago" filename touch -d "5 days ago" filename touch -t 201412210923.45 filename
Remove file first line
tail -n +2 oldfile > newfile sed '1d' oldfile > newfile sed -i '1d' file
Delete all user mail
# email message file location : /var/spool/mail/username > /var/spool/mail/ec2-user sudo cp /dev/null /var/spool/mail/root
Best way to delete
/var/spool/clientmqueue
sudo service sendmail stop sudo mv /var/spool/clientmqueue /var/spool/clientmqueue-todelete sudo mkdir /var/spool/clientmqueue sudo chown --reference=/var/spool/clientmqueue-todelete /var/spool/clientmqueue sudo chmod --reference=/var/spool/clientmqueue-todelete /var/spool/clientmqueue sudo service sendmail start sudo rm -rf /var/spool/clientmqueue-todelete
Copy without permissions
sudo cp --no-preserve=mode /var/log/messages messages
Copy website by wget
wget --wait=20 --limit-rate=20K -r -p -U Mozilla --no-parent http://www.google.com.vn/ # -w, --wait=seconds: pause seconds between retrievals, this makes sure you are not manually added to a blacklist # --limit-rate=amount: limit the download speed to amount bytes per second # -r, --recursive: download sites recursive # -p, --page-requisites: download all the files that are necessary to properly display a given HTML page # -U, --user-agent: identify as agent-string to the HTTP server # -np, --no-parent : do not ever ascend to the parent directory when retrieving recursively
Keep a background process alive after closing the terminal
nohup sh test.sh & exit nohup sh test.sh > nohup.out 2> nohup.err < /dev/null &
Without nohup.out created
nohup sh test.sh >/dev/null 2>&1 # doesn't create nohup.out nohup sh test.sh >/dev/null 2>&1 & # runs in background, doesn't create nohup.out nohup sh test.sh /dev/null 2>&1 & # completely detached from terminal
screen -A -d -m -S name_screen sh test.sh &
-A
Adapt the sizes of all windows to the size of the current terminal.
By default, screen tries to restore its old window sizes when attaching to resizable terminals-d -m
Start screen in "detached" mode. This creates a new session but doesn't attach to it -S <sessionname>
Specify a meaningful name for the session. This name identifies the session for "screen -list" and "screen -r" actions Send the already running process into the background process and keep alive after closing the terminal
Using the
Job Control
COMMAND_1 # run 1st command # stop (pause) the program and get back to the shell Ctrl + Z COMMAND_2 # run 2nd command Ctrl + Z jobs # show jobs # bg [jobspec] # place jobspec into the background, as if it had been started with `&` # if jobspec is not supplied, the current job is used bg %1 # disown -h [jobspec] # put that command into its own process so that you can exit the terminal while the command still run # so that the process isn't killed when the terminal close # if jobspec is not supplied, the current job is used # -h: mark each jobspec so that SIGHUP is not sent to the job if the shell receives a SIGHUP # SIGHUP (Hangup) signal is used by your system on controlling terminal or death of controlling process # use SIGHUP to reload configuration files and open/close log files # if you logout from your terminal all running jobs will be terminated disown -h %1 bg %2 disown -h %2 exit # exit the terminal
This process equivalent with
nohup COMMAND
Setup
oh-my-zsh
withautosuggestions
andfzf
on Ubuntu# install zsh sudo apt install zsh # config zsh as default bash chsh -s $(which zsh) # re-login # install oh-my-zsh sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" # install fonts-powerline which used for "agnoster" theme sudo apt install fonts-powerline # change theme by update ZSH_THEME vi ~/.zshrc # ZSH_THEME="agnoster" # download plugin zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # download and install fzf git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install # add more plugins vi ~/.zshrc # plugins=(git fzf zsh-autosuggestions) # re-open terminal to see what's changed
Comments
Post a Comment