# Some useful terminal commands ###### tags: `shared` `linux` `terminal` + Open *.pdf/*.png `open <file_name>` + Downloading files from server `scp <userName>@140.114.26.9:<directory> <fileName1> <fileName2>` + Uploading foles to server `scp <fileName1> <fileName2> <userName>@140.114.26.9:<directory> ` + Creating soft links `ln -s <source> <destination>` + Executing using soft link `./matlab` `./matlab [-nojvm] < <input_file.m> > <output_file.txt> [&]` + Sample Matlab code for saving figures/data (more at: https://www.mathworks.com/help/matlab/ref/saveas.html) `plot(<arguments>);` `save('example.mat');` `saveas(gcf,'example.png');` `close all;` + Adding user (need root) `adduser <user_name>` + Simple Linux bash commands + Change directory `cd <directory>` + Create folder `mkdir <directory>` + Remove file (use with care) `rm [-r|-f] <target>` -r: recursive(directory) -f: force + Move file `mv <source> <destination>` + Copy file `cp <source> <destination>` + Show directory contents `ls [-a|-l|-t] <directory>` + Search for string: grep `ls -alt ./ | grep *.txt` + Alias (short commands) `alias='ls -alt'` + Install packages(need sudo in finserver) `apt-get install <package_name>` + Environment variable (alternative for soft link) + For single user:(in /home/.bash_profile) `export PATH=$PATH:<PATH1>:<PATH2>` `source .bash_profile` + For all users:(in /etc/profile)(needs sudo) `export PATH=$PATH:<PATh1>:<PATH2>` `source /etc/profile` + For temporary usage:(inside terminal) `export PATH=$PATH:<PATH1>:<PATH2>` + After setting is done, you can use `matlab` instead of `./matlab` + execute Matlab/programs in background + Just append `&` at the end of the command (this will end once ssh is shut down) + Execute commands in background even if ssh is sut down `nohup <command> [< input.m] [> output.txt] &` (executing commands) `tail -f output.txt` (check output status) `lsof output.txt` (check nohup PID) `kill <PID>` (terminate process) + Find out current working directory of a running process `lsof -p <PID> | grep <cwd>` + See https://unix.stackexchange.com/questions/94357/find-out-current-working-directory-of-a-running-process for more details + Top command for GPU/CUDA + Show resources used (updated every second) `watch -n0.1 nvidia-smi` + Advanced: `htop` + Task running statuses + More at: https://serverfault.com/questions/319684/what-s-s1-t-r-mean-in-ps-ax-ps-list + `ps aux | grep <task_name>` + To suspend/stop/restart a process + From: https://www.tecmint.com/13-basic-cat-command-examples-in-linux/ + `kill -[TSTP|STOP|CONT] <pid_of_process>` ``` ROCESS STATE CODES Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process. D Uninterruptible sleep (usually IO) R Running or runnable (on run queue) S Interruptible sleep (waiting for an event to complete) T Stopped, either by a job control signal or because it is being traced. W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z Defunct ("zombie") process, terminated but not reaped by its parent. For BSD formats and when the stat keyword is used, additional characters may be displayed: < high-priority (not nice to other users) N low-priority (nice to other users) L has pages locked into memory (for real-time and custom IO) s is a session leader l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) + is in the foreground process group ``` + 5 commands to check memory usage on Linux: http://www.binarytides.com/linux-command-check-memory-usage/ + Check file size + `df -s /home/*` + `du -sh /home/*`