linux - 常用命令(一直更新)

修改文件权限:

sudo chmod 666 xxx     # 将xxx文件/文件夹的权限改为所有人可写可读。

更改当前工作目录:

su - huangtiantian01      # 改到 [huangtiantian01@xxx]$ 用户目录下

查看磁盘用量

df -h
du -h --max-depth 1 /ssd2/    #查看文件夹大小

Linux查看物理CPU个数、核数、逻辑CPU个数

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 查看内存信息
cat /proc/meminfo

软连接

ln -s /ssd2/data /home/huangtiantian01/  
# /ssd2/data为需要被链接的源文件目录,/home/huangtiantian01/为创建软链接的目标文件目录

wget

下载目录下所有文件:

wget -r -np -nH -R index.html http://url/including/files/you/want/to/download/

解释一下各个参数的含义:

 -r  : 遍历所有子目录
 -np  : 不到上一层子目录去
 -nH  : 不要将文件保存到主机名文件夹
 -R index.html  : 不下载 index.html 文件

scp传文件

scp -r desUser@privateIp:desPath localFilePath   # 从privateIp下载文件
scp -r localFilePath desUser@privateIp:desPath   # 传文件到privateIp

1、同一局域网下

scp -P 22 -r localFilePath desUser@privateIp:desPath

2、不同网络

scp -P 8888 -r localFilePath desUser@publicIp:desPath

统计文件个数

ls -l |grep "^-"|wc -l      # 统计某文件夹下文件的个数 
ls -l | wc -l               # 统计某文件夹下文件的个数
ls -l | grep "^d"|wc -l     # 统计某文件夹下目录的个数   
ls -lR | grep "^-"|wc -l      # 统计文件夹下文件的个数,包括子文件夹里的

如统计/home/han目录(包含子目录)下的所有js文件

ls -lR /home/han|grep js|wc -l    # 或
ls -l "/home/han"|grep "js"|wc -l   
grep "^-"    # 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l     # 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

零碎

watch -n 0.2 nvidia-smi   #查看GPU使用情况
 head -n 1 /etc/issue       # 查看操作系统版本
uname -a        # 查看系统版本
nvidia-smi      # 看用了多少内存
lspci | grep -i vga    # 显示机器上的显卡信息
lsmod | grep nvidia    # which drivers are loaded.
ps -eo pid,start,cmd   # 看进程开始时间

find

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

1、find的使用格式如下:

$ find <指定目录> <指定条件> <指定动作>
  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
  - <指定条件>: 所要搜索的文件的特征。
  - <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

2、find的使用实例:

搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
  $ find . -name 'my*'
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
  $ find . -name 'my*' -ls
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
  $ find . -type f -mmin -10

locate

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

locate命令的使用实例:

搜索etc目录下所有以sh开头的文件。
  $ locate /etc/sh
搜索用户主目录下,所有以m开头的文件。
  $ locate ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
  $ locate -i ~/m

ps

ps aux | grep python  # 查看Python进程

Linux下显示系统进程的命令ps,最常用的有ps -efps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD风格。
ps aux 最初用到Unix Style中,而
ps -ef 被用在System V Style中,两者输出略有不同。
现在的大部分Linux系统都是可以同时使用这两种方式的。

1、ps -ef 是用标准的格式显示进程的、其格式如下
linux - 常用命令(一直更新)_第1张图片

其中各列的内容意思如下

UID     //用户ID、但输出的是用户名
PID     //进程的ID
PPID    //父进程ID
C       //进程占用CPU的百分比
STIME   //进程启动到现在的时间
TTY     //该进程在那个终端上运行,
        //若与终端无关,则显示? 
        //若为pts/0等,则表示由网络连接主机进程。
CMD     //命令的名称和参数
2、ps aux 是用BSD的格式来显示、其格式如下

linux - 常用命令(一直更新)_第2张图片

ps -ef 不同的有列有

USER      //用户名
%CPU      //进程占用的CPU百分比
%MEM      //占用内存的百分比
VSZ       //该进程使用的虚拟內存量(KB)
RSS       //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT      //进程的状态
START     //该进程被触发启动时间
TIME      //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有

D      //无法中断的休眠状态(通常 IO 的进程);
R      //正在运行可中在队列中可过行的;
S      //处于休眠状态;
T      //停止或被追踪;
W      //进入内存交换 (从内核2.6开始无效);
X      //死掉的进程 (基本很少见);
Z      //僵尸进程;
<      //优先级高的进程
N      //优先级较低的进程
L      //有些页被锁进内存;
s      //进程的领导者(在它之下有子进程);
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+      //位于后台的进程组;

有关僵尸进程和Z状态进程,见我这篇文章:垃圾进程之 D & Z 。

文件内容查阅

cat      # 由第一行开始显示文件内容
tac      # 从最后一行开始显示,可以看出 tac 是 cat 的倒著写
nl       # 显示的时候,顺道输出行号
more     # 一页一页的显示文件内容  
less     # 与 more 类似,但是比 more 更好的是,他可以往前翻页
head     # 只看头几行
tail     # 只看尾巴几行
od       # 以二进位的方式读取文件内容

shell

1、查看shell
more /etc/shells   # 查看目前我们的Linux有多少可以使用的shells

检查/etc/shells这个档案,至少有底下这几个可以用的 shells:

 /bin/sh (已经被 /bin/bash 所取代)
 /bin/bash (就是 Linux 预设的 shell)
 /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
 /bin/tcsh (整合 C Shell ,提供更多的功能)
 /bin/csh (已经被 /bin/tcsh 所取代)
 /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
2、切换shell:
chsh -s /bin/zsh     # 设置zsh为你的默认的shell
chsh -s /bin/bash    # 如果想切换回来bash,使用该命令即可

du

du -sh                  # 查看当前目录总共占的容量。而不单独列出各子项占用的容量 
du -lh --max-depth=1    # 查看当前目录下一级子文件和子目录占用的磁盘容量。

零碎

sudo apt-get remove cuda 
# 官网下载tgz,解压出一个cuda文件夹
sudo dpkg -i ***.deb
sudo apt-get install cuda-8.0

Use the following commands to uninstall a RPM/Deb installation:

sudo apt-get --purge remove     # Ubuntu
sudo apt autoremove

install CUDA 8.0 and add these to my .profile file:

vim ~/.profile      

# 添加这两行:
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"
export CUDA_HOME=/usr/local/cuda-8.0

# 最后:
source ~/.profile

nvidia显卡驱动与编译器版本的查询命令

转自 http://www.linuxdiyf.com/linux/16687.html

1)首先验证你是否有nvidia的显卡(http://developer.nvidia.com/cuda-gpus这个网站查看你是否有支持gpu的显卡):

$ lspci | grep -i nvidia 

2)查看你的linux发行版本(主要是看是64位还是32位的):

$ uname -m && cat /etc/*release

3)看一下gcc的版本:

$ gcc –version

4)查看NVIDIA显卡的驱动版本

$cat /proc/driver/nvidia/version

5)查看nvcc编译器的版本

nvcc -V i

6)/dev/nvidia*这里的文件代表了本机的NVIDIA显卡,如:

foo@bar-serv2:/dev$ ls -l nvidia*
crw-rw-rw- 1 root root 195, 0 Oct 24 18:51 nvidia0
crw-rw-rw- 1 root root 195, 1 Oct 24 18:51 nvidia1
crw-rw-rw- 1 root root 195, 255 Oct 24 18:50 nvidiactl
表示本机有两块NVIDIA显卡

7)查看显卡名称以及驱动版本

nvidia-smi
nvidia-smi -a

mac 查看、修改文件权限

1)查看权限

ls -l  文件夹名/文件名

2)修改文件的权限

chmod [<权限范围><权限操作><具体权限>] [文件或目录…]
<权限范围> 
u:User,即文件或目录的拥有者。 
g:Group,即文件或目录的所属群组。 
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。 
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

<权限操作> 
+:表示增加权限 
- :表示取消权限 
=:表示唯一设定权限

<具体权限> 
r:表示可读取 
w:表示可写入 
x :表示可执行

如:让其他用户都可以对111.txt文件有写的权限,则执行

chmod o+w 111.txt

解压、压缩

.zip

解压:unzip FileName.zip
压缩:zip FileName.zip DirName

.rar

解压:rar x FileName.rar foldername/
压缩:rar a FileName.rar DirName

MAC下安装rar、unrar: https://blog.csdn.net/apple9005/article/details/55048241

.tar

解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

.gz

解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

.bz2

解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

.bz

解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知

.tar.bz

解压:tar jxvf FileName.tar.bz
压缩:未知

.Z

解压:uncompress FileName.Z
压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

.lha

解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

.deb

解包:ar p FileName.deb data.tar.gz | tar zxf -

SCP

https://www.vpser.net/manage/scp.html

scp常用的一些参数:

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接,认证,或是配置错误。
-C 启用压缩选项,
-r 传递目录下的所有内容
-P 选择端口 . 注意 -p 已经被 rcp 使用 .   
-4 强行使用 IPV4 地址 .   
-6 强行使用 IPV6 地址 . 

scp是安全的文件拷贝,基于ssh的登录。

假定你想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器192.168.0.2上的/home/tmp。而且你在远程服务器 上的帐号名为root。可以用这个命令: 
scp /home/a.tar.tz [email protected]:/home/tmp/

如果把文件从远程机器拷贝到本机当前目录用这个命令: 
scp [email protected]:/home/a.tar.tz 

拷贝远程机器的整个目录下的文件
scp -r [email protected]:/home/* ./

ubuntu下用命令行安装软件

sudo dpkg -I iptux.deb  # 查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于--info)
sudo dpkg -c iptux.deb  # 查看iptux.deb软件包中包含的文件结构(其中-c等价于--contents)
sudo dpkg -i iptux.deb  # 安装iptux.deb软件包(其中-i等价于--install)
sudo dpkg -l iptux  # 查看iptux软件包的信息(软件名称可通过dpkg -I命令查看,其中-l等价于--list)
sudo dpkg -L iptux  # 查看iptux软件包安装的所有文件(软件名称可通过dpkg -I命令查看,其中-L等价于--listfiles)
sudo dpkg -s iptux  # 查看iptux软件包的详细信息(软件名称可通过dpkg -I命令查看,其中-s等价于--status)
sudo dpkg -r iptux  # 卸载iptux软件包(软件名称可通过dpkg -I命令查看,其中-r等价于--remove)

注:dpkg命令无法自动解决依赖关系。如果安装的deb包存在依赖包,则应避免使用此命令,或者按照依赖关系顺序安装依赖包。

修改屏幕分辨率

  856  xrandr --output HDMI-1 --mode 3840x2160_60.00
  857  sudo xrandr --newmode "3840x2160_60.00" 712.75  3840 4160 4576 5312  2160 2163 2168 2237 -hsync +vsync
  858  xrandr --output HDMI-1 --mode 3840x2160_60.00
  859  xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"
  860  sudo xrandr --addmode HDMI-1 3840x2160_60.00
  861  xrandr --output HDMI-1 --mode 3840x2160_60.00
  862  cvt 3840 2160 30
  863  sudo xrandr --newmode "3840x2160_30.00"  338.75  3840 4080 4488 5136  2160 2163 2168 2200 -hsync +vsync
  864  xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"
  865  sudo xrandr --addmode HDMI-1 3840x2160_60.00
  866  sudo xrandr --addmode HDMI-1 3840x2160_30.00
  867  xrandr --output HDMI-1 --mode 3840x2160_30.00
  868  cvt 3840 2160 25
  869  sudo xrandr --newmode "3840x2160_25.00"  278.75  3840 4064 4464 5088  2160 2163 2168 2194 -hsync +vsync
  870  sudo xrandr --addmode HDMI-1 3840x2160_25.00
  871  xrandr --output HDMI-1 --mode 3840x2160_25.00

重启后出错:

 1050  xrandr --dpi 168
 1054  sudo gedit /etc/lightdm/lightdm.conf.d/lightdm.conf
 1055  sudo xrandr --newmode "3840x2160_25.00"  278.75  3840 4064 4464 5088  2160 2163 2168 2194 -hsync +vsync
 1056  sudo xrandr --addmode HDMI-1 3840x2160_25.00
 1057  xrandr --output HDMI-1 --mode 3840x2160_25.00

简化版:

sudo xrandr --newmode "3840x2160_25.00"  278.75  3840 4064 4464 5088  2160 2163 2168 2194 -hsync +vsync
sudo xrandr --addmode HDMI-1 3840x2160_25.00

文件系统分辨率问题,杀掉文件系统进程:

top   # 查看nautilus的进程号,或者:
ps aux | grep nautilus      
kill -9 process_id 

你可能感兴趣的:(linux - 常用命令(一直更新))