欢迎光临
我们一直在努力

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

u22e阅读(1677)

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

查看CPU信息(型号)
[root@AAA ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
     24         Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz

# 查看物理CPU个数
[root@AAA ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2

# 查看每个物理CPU中core的个数(即核数)
[root@AAA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores    : 6

# 查看逻辑CPU的个数
[root@AAA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
24

这些都代表什么,那就请看CPU架构

多个物理CPU,CPU通过总线进行通信,效率比较低,如下:

多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信,如下:

多核超线程,每个核有两个逻辑的处理单元,两个核共同分享一个核的资源,如下:

从上面执行的结果来看,证明我使用的cpu有2 * 6 = 12核,每个核有2个超线程,所以有24个逻辑cpu。

Oracle安装 检测阶段警告Free space: /tmp空间不足解决办法

u22e阅读(1600)

运维DBA反映在Oracle 11G数据库安装过程中,在检测阶段出现报错警告Free space: /tmp空间不足
1.ORACLE 11G报Free space: /tmp空间不足错误


详细信息
Free Space: xifenfei:/tmp – This is a prerequisite condition to test
whether sufficient free space is available in the file system.
Error:

PRVF-7501 : Sufficient space is not available at location “/tmp”
on node “xifenfei” [Required space = 1GB ]
– Cause:  Not enough free space at location specified.  – Action:
Free up additional space or select another location.
Expected Value
: 1GB
Actual Value
: 238MB

错误提示很明显ORACLE安装过程需要1G的临时空间,但是现在/tmp只有238M,空间明显不足,是的oracle检测失败,为了安装过程不出意外,决定分析并解决该问题

磁盘空间使用情况

[ora11g@oracleplus ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
3.9G 3.3G 238M 93% /
/dev/sda1 99M 24M 71M 25% /boot
tmpfs 1002M 0 1002M 0% /dev/shm
/dev/sdb1 20G 7.8G 11G 42% /u01

这里可以看出来/tmp没有另外的分配分区,而是挂载在/下面,也就是说,/tmp最多使用的空间就是/dev/mapper/VolGroup00-LogVol00分区能够使用的最大空间,也就是238M,证明ORACLE的检查程序说的是事实。

2.Free space: /tmp空间不足解决该问题
1.建立新tmp目录

[root@oracleplus ora11g]# mkdir /u01/tmp
[root@oracleplus ora11g]# chown root:root /u01/tmp
[root@oracleplus ora11g]# chmod 1777 /u01/tmp

2.设置数据库用户变量

vi db_home/.bash_profile
export TEMP=/u01/tmp
export TMPDIR=/u01/tmp

[ora11g@oracleplus ~]$ env|grep TMP
TMPDIR=/u01/tmp
[ora11g@oracleplus ~]$ env|grep TEMP
TEMP=/u01/tmp

3.重新运行runInstaller
4.安装完成清理相关/u01/tmp 和相关环境变了,让数据库使用系统默认(根据实际情况处理)

Oracle Linux 安装X Window 图形界面

u22e阅读(2045)

1、挂载光驱

mkdir /mnt/cdrom
mount /dev/sr0  /mnt/cdrom

2、创建仓库
cd /etc/yum.repos.d
vi local.repo

内容为:
[local]
name=localdvd
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

保存退出。
3、安装xwindow :

yum groupinstall “X Window System”

4、安装gnome:

yum groupinstall “Desktop”

5、更改启动模式:    vi   /ect/inittab     将 3改成5

6、切换到普通用户:

su – test

7、启动X:

startx

8、删除redhat订阅:

yum remove subscription*

9、安装右键终端:

yum install nautilus-open-terminal

云主机centos linux设置虚拟内存(交换分区)

u22e阅读(1012)

1. 添加swap文件大小为2G
默认情况下, of=/swapfile 即swapfile文件创建在/var/目录下。
若我在创建在/opt/image/目录下, 则下面所有的操作里有/swapfile的都要改为/opt/image/swap

# dd if=/dev/zero of=/swapfile bs=1k count=2048000

2. 创建SWAP文件
# mkswap /swapfile

3. 激活SWAP文件
# swapon /swapfile

4. 查看SWAP信息是否正确
# swapon -s

5. 添加到fstab文件中让系统引导时自动启动
注意, 这里是采用了swapfile文件的默认路径, 即/var/swapfile。若你上面的操作中swapfile文件不是在/var/目录下, 则下面的/var/swapfile也要相应修改为自己设写的。

# echo “swapfile swap swap defaults 0 0” >> /etc/fstab

6. 用命令free检查2G交换分区生效
# free -m

或者, 检查meminfo文件

# grep SwapTotal /proc/meminfo

7. 释放SWAP文件
# swapoff /swapfile

8. 删除SWAP文件
# rm -fr /swapfile

mariadb数据库的主从复制

u22e阅读(957)

寻找两台主机命名1和2,其中1为主服务器,2为从服务器

一、配置主服务器

1.yum install mariadb-server

2.配置文件/etc/my.cnf

添加 :

innodb_file_per_table

log-bin

server_id=1

3.启动数据库

systemctl start mariadb

4.查看数据库的二进制日志

show binary logs;

5.授权用户

grant replication slave on *.* to repuluser@’192.168.42.135′ identified by ‘centos’

二、配置从服务器

1.yum install mariadb-server

2.修改配置文件/etc/my.cnf

添加 :

innodb_file_per_table

server_id=2

3.配置从服务器数据库

4.启动I/O Thread和SQL Thread

start slave;

5.show databases;

 

简述DNS服务器原理,并搭建主-辅服务器

u22e阅读(1747)

专业术语

  • 协议:是一种规范,http, ftp, smtp(邮件传输), pop3/imap4(邮件收取)
    • 规范;由特定具体的软件来实现
  • :无形的,逻辑的概念;正向解域区域 + 反向解析区域
  • 区域:物理,一个一个的解析库对应的主机; 正向解析区域 反向解析区域
  • 递归请求:发起一次查询,就会有结果
  • 迭代查询:发起N次查询,才有结果;缓存DNS;
  • 转发非我所负责的域,就转发;注意:接收请求的主机,应该为转发的主机递归;
    • 区域转发:解析非我所负责的域的主机,且解析此域内的主机才转发;
    • 全局转发:解析非我所负责的域的主机,统统转发;

DNS工作逻辑

  1. dns程序扮演客户端;
  2. 查询本机/etc/hosts文件;
  3. 根据/etc/resolv.conf中nameserver指令指向的IP(运营商缓存DNS),从上向下;向第一个DNS服务器发起 递归查询请求;
  4. 运管商DNS 迭代查询 查找根域,返回顶级域某个DNS的IP;
  5. 运营商DNS 迭代查询 查找顶级域,返回三级域某个DNS的IP;
  6. 运营商DNS 迭代查询 查找三级域,返回其域内某个主机的IP;
  7. 运营商DNS 返回递归请求
  8. dns程序库返回给某进程其域名解析结果
  9. 真正的通信

域名注册

在Top Level Domain的DNS服务器主机的解析库中添加子域条目;子域指向的主机(IP)即为解析 子域 的dns服务器;子域DNS服务器:需要一个有公网IP的主机;

搭建主从服务器

主DNS

从DNS

搭建并实现智能DNS

 

MAC OS苹果系统密码破解方法

u22e阅读(1384)

破解苹果操作系统的密码比windows更方便更有效,不需要硬软件工具就可以破解!下面就来介绍破解方法

第一步:执行硬盘检测(只读), 这一步可以省略
/sbin/fsck -y

第二步:加载文件系统(读/写)
/sbin/mount -uaw

第三步:删除初始化设置时的OSX生成的隐藏文件”.applesetupdone”
rm /var/db/.AppleSetupDone

最后一步:重启
reboot
重启开机后出现类似装机时的欢迎界面。别担心,东西没丢。就像第一次安装一样, 重新建立一个新的Mac OS管理员账号。然后在新的管理员下打开系统预制 - 账户,打开最下面的锁,询问密码时,用新的管理员密码登录。会看到至少两个账号,新的管理员的帐号和原来的帐号,点中原来的账号,选 密码 - 更改密码。你不必有原先的Mac OS密码就直接可以设新密码了。点下面的登陆选项 (小房子),选中 自动以右边的身份登陆, 同时在下拉菜单中选你原先的账号。重启, 大功告成。至此破解Mac OS开机密码工作完成。

linux入门

u22e阅读(1366)

  1. Centos中分root用户和普通用户,root为超级管理员,几乎具有所有的系统控制
  2. 刚进入linux系统,Ctrl+Alt+F[1-6]可以切换虚拟终端  (tty)
  3. 图形终端:CentOS 6: Ctrl + Alt + F7

    CentOS 7:在哪个终端启动,即位于哪个虚拟终端

    伪终端:ssh远程连接,(pty,/etc/pts/#)   查看当前终端设备:#tty

  4. 交互式接口:启动终端后,在终端设备附加一个交互式应用程序

    GUI:图形接口    GLI:命令行接口

  5. Shell是linux系统的用户界面,提供了用户与内核进行交互式操作的一种接口。它接收用户输入的命令并把它送入内核去执行。也可以称其为linux的命令解释器,收一种搞基的程序设计语音。
  6. GNU是GNU 计划中重要的工具软件之一,目前也是 Linux 标准的shell与sh兼容。Centos默认使用。

    #echo $SHELL 显示当前使用的shell       #cat /etc/shells   显示当前系统使用的所有shell

  7. 命令提示符格式:[root@localhost ~]# echo $PS1

    #  管理员      $ 普通用户

    修改提示符格式:PS1=”\[\e[31m\][\u@\h \W]\\$\[\e[0m\]” 小技巧了解即可

  8. shell中可执行的命令有:内部命令:shell自带,help 列出内部命令。

    其中  enable cmd  启用cmd

    enable -n cmd   禁用内部命令(命令前面有*标记)

    enable -n   查看所有禁用的内部命令

    外部命令:在文件系统路径下有对应的可执行程序文件,用which 和whereis查

    type COMMAND  查询命令是属于内部还是外部

  9. Hash 缓存为王     可以大大提高命令的调用速率,初始hash表为空
  10.  Hash 常见用法:

    hash 显示hash 缓存

    hash –l  显示hash 缓存,可作为输入使用

    其中      hash –p path name  将命令全路径path起 起 别名为name

    hash –t name  打印缓存中name 的路径

    hash –d name  清除name 缓存

    hash –r  清除缓存

  11. 定义别名NAME ,其相当于执行命令VALUE,#alias NAME=’VALUE’命令行中定义的别名只对当前shell进程有效,  unalias [-a]  name   撤销别名  -a 取消所有别名

如果想永久有效,要定义在配置文件中

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

编辑的新配置不会立即生效,shell进程需要重读配置文件: source /etc/bashrc

source /home/username/.bashrc

如果别名同原命令同名,要使用原命令可以使用:`COMMAND`或“\COMMADN” 外部命令使用路径

12.命令格式:COMMAND [OPTIONS..][ARGUMENTS…]

段选项可以合并:-a -l=-al

注意:多选项,以及多参数时和命令之间使用空白字符分隔

取消和结束命令执行:Ctrl+c ,Ctrl+d  一个命令可以用\分成多行

13.screen命令:创建新screen会话: screen -S [SESSION]    大写-S 创建

加入screen会话:  screen -x [SESSION]   小写 -x 加入  也可以输入进程号

剥离当前screen会话: Ctrl+a,d  按完前面的松开后按d

显示所有已打开的screen会话:screen -ls

恢复screen会话:ctrl+r  然后输入名字或者进程号

14.bash特性:tab键: 命令补全,路径补全  连续按两次提示相同开头的命令

同时会保存输入的命令历史,方向键选择,

ctrl+l 清屏 ctrl+c终止命令  ctrl+z挂起命令 ctrl+q允许屏幕输出 ctrl+o阻止屏幕输出,锁定

ctrl+a,e,u,k等 ctrl+d 正常退出

当天学习的linux命令:alias  file free   help    hash   hostname   halt   grep(正则表达式) id ifconfig  ls lsb_releasr   init0 6 3 5(0关机6重启3字符界面5图形界面)lscpu   nano  runlevel  pwd poweroff  type  reboot   source   shutdown  whoami   startx(启动图形界面)  w  who   which  uname -r  echo

 

echo –e  让转义符生效           bc 计算器 obase  ibase输入时指定几进制

‘’  强引用    最傻的符号  什么都不改变

“”  弱引用

“   命令调用  最聪明的符号  echo my host is `hostname`

安装screen

df    查看光盘挂载    packages 封装包

rpm -i /run/media/root/CentOS\ 7\ x86_64/Packages/screen-4.1.0-0.23

课后作业

1、显示昨天的日期

2、alias >buildtin 优先级

3、显示当前时间,格式:2016-06-18 10:20:30

4、显示前天是星期几

5、设置当前日期为2019-08-0706:05:10

6、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间

7、今天18:30自动关机,并提示用户

获取帮助的能力决定了技术的能力!whatis  makedb更新数据库 

whatis COMMAND 显示命令的简短描述

内部命令:help cd    man bash

外部命令:ls –help   man COMMAND

man –k passwd     想改密码不晓得用什么命令用次命令查询 命令忘了可以写一半也能查询

info passwd   此帮助打开是个网站形式可以进入*标志查找帮助 ma不到符合操作要求可以用

usr/share/doc    说明文档

man章节认识:1 用户命令  2 系统调用  3 C库调用   4 设备文件及特殊文件 5 配置文件格式

6 游戏    7 杂项     8 管理类命令 9 linux内核API

man命令的操作方法:j 向下翻一行   k 向上

b 向文件首部翻一屏   空格键向文件尾部翻一屏

q  退出

同时还支持搜索关键字:/KEYWORD 向下查找    ?KEWORD  向上查找

n  同关键字方向查找  N 同关键字反向查找

初识操作系统和linux

u22e阅读(1328)

1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。

2.世界上第一台计算机是1946年诞生在美国宾州大学。

3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于提出计算机硬件系统由运算器、控制器、存储器、输入设备、输出设备。摩根定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。现在计算机技术进本很难遵循次定律,未来会往量子计算机发展。

4.服务器(server)是计算机的一种,是网络中为客户端计算机提供各种服务的高性能的计算机

服务器按外型分类:塔式服务器,

机架式服务器(机架服务器的宽度为19 英寸(48.26cm,高度以U 为单                         位 1U=1.75 英寸=44.45 毫米,通常有1U,2U ,3U ,                         4U ,5U ,7U 几种标准的服务器。机柜的尺寸也是采用                         通用的工业标准。现阶段销售数量最多的服务器)

刀片式服务器:

按应用功能:Wed服务器,数据库服务器,邮件服务器,文件服务器,ERP服务器等。

服务器CPU公司:

Intel: Xeon 至强   Itanium  安腾

AMD: Althlon MP (现在很少有人使用)

IBM: power(基本他们自己公司使用)

CPU的类型有:

x86

X64 (CISC)

ARM (Acorn RISC Machine)

m68000, m68k (moto)

Power (IBM)

Powerpc (apple ,ibm,moto)

Ultrasparc  (Sun)

Alpha (HP)

安腾(compaq)

服务器可以按CPU 个数来分:

4路及4路以上服务器(企业级服务器)

2路服务器(部门级服务器)

1路服务器(入门级服务器)

服务器硬盘接口一般是SAS接口,同时也支持SATA接口。现在已经支持SSD接口

服务器的性能短板:在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶             颈。

存储网络:

DAS—– 直接连接存储(Direct Attached Storage)存储设备与主机的紧密相连

NAS—– 网络连接存储(Network Attached Storage)通过局域网在多个文件服务器之            间实现了互联,基于文件的协议( NFS、SMB/CIFS )实现文件共享

SAN—– 存储区域网络(Storage Area Networks)利用高速的光纤网络链接服务器与存            储设备,基于SCSI ,IP ,ATM等 等多种高级协议,实现存储

 

操作系统(OS):(1)内核功能:进程管理,内存管理,安全管理,网络管理,文件管               理,硬件机制。

          (2)OS 分类:

服务器OS :RHEL, CentOS,Windows Server,AIX

桌面OS :windows 10,windows 7,Mac OS ,fedora

移动设备OS :Andriod,IOS,YunOS

        

自由软件是指:自由学习,自由修改,自由获取。(但不不代表免费free)

linux的发展历史及三大发行版本:1.Redhat   2.debian   3.Gentoo  4.LFS(自制                      linux)

                 发展历史可以网上查询了解即可;

linux的哲学思想: 1.一切皆文件;

          2.由目的单一的小程序组成,组合小程序完成复杂任务;

         3.尽量避免捕获用户接口;

            4.配置文件保存为纯文本格式;

 

获取发行版CentOS:

https://wiki.centos.org/Download

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

 

linux2大接口:

                      GUI接口:Graphical User Interface
CLI接口:command-line interface

命令格式: 命令  选项  参数

# command  options…  arguments…
选项:
短选项: –
多个选项可以组合:-a -b = -ab
长选项: —

参数:命令的作用对象
虚拟终端(terminal):Ctrl+Alt+F1-F6
模拟终端:GUI图形界面中的终端

初学使用VM虚拟机安装linux: 安装过程注意不要最小化安装, 一个硬盘最多4个主分区,扩展分区可以多个,安装过程中可以使用CTRL+ALT+F2进入命令行查看安装进度,cat/etc/proc/partitions可查看分区情况,cat /etc/meminfo可查看内存,CTRL+ALT+F3查看过程,CTRL+ALT+F6返回安装界面。(安装时尽量使用英文,方便以后使用)

目录结构区别

linux

 

/

usr    应用程序

home   家目录

dev   设备文件

lib64  库文件

etc=edit config   配置文件和二进制文件

boot 启动 kernel

proc process 进程

sys system

opt    软件安装目录

mnt mount 挂载

初次接触下几个小命令:

cat /proc/cpuinfo

lscpu          列出CPU信息

cat /proc/meminfo

free          列出内存信息

cat /proc/partitions  分区信息

cat /proc/swaps

lsb_release

uname -r  内核信息

df

whoami

who am i   当前用户

tty   显示当前终端号

 

init 3 字符界面(关闭图形界面)

Init 5 图形界面(开启图形界面)

init 0 关机

init 6 reboot 重启

机器学习需要掌握的Linux技巧

u22e阅读(1153)

随着软件系统的不断发展,今天,不同的操作系统对应着不同的适用人群:Windows 面向办公室和商用,Mac 面向创意人群,而 Linux 面向软件开发者。对于操作系统提供商而言,这种市场分割大幅度简化了产品技术需求、用户体验和产品方向上的投入。然而,这也加剧了兼容性问题,让不同业务进入了狭窄、互不相容的领域:商务人士无法对创意提供洞察力,而开发者也无法深入到商务决策中去。

在现实中,知识和技能是流动的,跨越多个学科和领域。与其说「你只能擅长一件事」的理念是迈向精通的路线图,还不如说一种过早优化的方法。一旦从社会中采样大量的任务,你就只能知道你擅长什么,也许你还发现自己擅长它们中的很多。

对于现代的业务分析师,弥补业务与软件之间的鸿沟尤其重要。业务分析必须是「双重平台」,能够利用仅在 Linux(或 OS X)上可用的命令行工具,但是仍然受益于 Windows 的 Microsoft Office。可以理解的是,Linux 会使具有商学学位的人感到恐惧。幸运的是,正如大多数事情一样,你只需 20% 的任务即可完成 80% 的工作。下面是我的 20%。

业务分析是基于数据的,而机器学习正是强大的数据分析工具。我们利用机器学习模型分析数据最好的环境却恰恰是 Linux 系统,这不仅是因为它支持广泛的 Python 机器学习库,同时在于环境配置与管理的简单明了。因此,本文将为机器学习读者梳理 Linux 系统的基本特性与命令。

为什么机器学习分析师需要了解 Linux

由于其开源的底层,Linux 从不断从数以万计的开发者贡献中受益。他们构建的程序和工具不仅使其工作更简单,也简化了跟随他们的编程人员的工作。结果,开源开发带来了一种网络效应:在平台上构建工具的开发者越多,能够利用这些工具立刻编写其程序的其他开发者就越多。

结果就是 Linux 中编写的 Linux 程序和实用工具(统称为软件)的扩展套件——其中很多从未用于 Windows。一个示例是被称作 git 的流行的版本控制系统(VCS)。开发者本可以编写这一在 Windows 工作的软件,但是却没有。他们让其在 Linux 命令行上工作,因为生态系统已经提供全部所需的工具。

具体来说,Windows 上的开发有两个主要问题:

1. 基本任务,比如文件解析、工作调度和文本搜索比运行命令行工具更为重要。

2. 编程语言(比如 Python、C++)及其相关代码库会引发错误,因为它们期望特定的 Linux 参数或文件系统定位。

这意味着若想在 Windows 上进行开发,我们需要花费更多的时间来重写 Linux 中已有的基本工具,并排除操作系统兼容性错误。这并不令人意外——Windows 生态系统当初并没有考虑软件开发设计的需求。

借助这个 Linux 开发案例,让我们从最基本的开始。

Linux 的基本单元:「shell」

「shell」(也被称为终端、控制台或命令行)是一个基于文本的用户界面,通过它把命令发送给机器。在 Linux 中,shell 的默认语言是 bash。与主要在 Windows 内部进行点击操作的 Windows 用户不同,Linux 开发者坚持使用键盘把命令输入到 shell。对于那些没有编程背景的人来说,这种转变一开始也许会不自然,但是在 Linux 中开发的好处很容易超过最初的学习投资。

学习几个重要的概念

和成熟的编程语言相比,bash 只需要学习几个主要的概念。这一步完成之后,之后 bash 的学习就只剩下记忆了。更清楚地说就是:要学好 bash,只需要记住 20—30 个命令(command)以及其中最常用的参数(argument)就可以了。

对于非开发者而言,Linux 很令人费解,因为开发者似乎能随意且不费力地使用深奥的终端命令。其实是因为他们只记住了少量的命令—对于更复杂的问题,他们(和所有普通人一样)也需要谷歌一下。

以下就是 bash 中的主要概念。

命令语法

bash 中的命令是区分大小写的,且遵循 {命令}{参数} 的语法结构。

例如,在『grep-inr』中,grep 是命令(搜索文本的一个字符串),-inr 是标记(flag)或参数(随 grep 默认运行而变化)。理解这个命令的唯一方法是使用谷歌搜索,或输入『man grep』命令。我推荐同时学习命令和其中最常用的参数,否则单独学习每一个标记的作用是很费力的。

目录相对地址

当前目录:.

上一级目录的上一级目录:..

用户的主目录:~

文件的系统根目录:/

例如,为了从当前目录换到上一级目录,需要输入:「cd..」。类似地,为了复制位于「/path/to/file.txt」文件到上一级目录中,需要输入「cp /path/to/file.txt.」(请注意命令末尾的点)。这些例子中使用的都是相对路径,可以使用绝对路径替换。

标准输入(STDIN)/标准输出(STDOUT)

任何输入和提交(通过键入 ENTER)到窗口的命令都被称为标准输入(standard input,STDIN)。

任何程序打印(print)到终端的东西(例如,一份文件中的文本)都被称为标准输出(standard output,STDOUT)。

管道(PIPING)

1 |

一种管道,其左方是一个命令的 STNOUT,将作为管道右方的另一个命令的 STDIN。

例如:echo ‘test text’ | wc -l

2 >

大于号,作用是取一个命令 STDOUT 位于左方,并将其写入/覆写(overwrite)入右方的一个新文件。

例如:ls > tmp.txt

3 >>

两个大于号,作用是取一个命令 STDOUT 位于左方,并将其追加到右方的一个新的或现有文件中。

例如:date >> tmp.txt

通配符(WILDCARDS)

这类似于 SQL 中的% 符号,例如,使用「WHERE first_name LIKE 『John%』」搜索所有以 John 起始的名字。

在 bash 中,相应的命令是「John*」。如果想列出一个文件夹中所有以「.json」结尾的文件,可以输入:「ls *.json」。

TAB 键自动完成

如果我们输入一个命令并按下 TAB 键,那么 Bash 将自动完成该命令。但是,我们也应该使用一些如 zsh 或 fish 工具来自动完成,因为我们很难记住各种命令及它们的参数。更准确地说,这些工具会基于我们的命令行历史自动完成命令语句。

退出

有时候我们会卡在一些程序中并不知道如何退出它们。这在 Linux 新手中是很常见的问题,这也会大大损害新手的积极性。一般来说,退出命令会和字母「q」有一些关系,所以记住以下的退出命令或快捷键就十分有用了。

  • Bash

CTRL+c

q

exit

  • Python

quit()

CTRL+d

  • Nano: CTRL+x
  • Vim: <Esc> :q!

常用 Bash 命令

以下是在 Linux 中最常用到的指令,在使用新系统进行开发时,记住这些指令对于快速上手非常重要。

  • cd {directory}:转换当前目录
  • ls -lha:列出目录文件(详细信息)
  • vim or nano:命令行编辑器
  • touch {file}:创建一个新的空文件
  • cp -R {original_name} {new_name}:复制一个文件或目录(包含内部所有文件)
  • mv {original_name} {new_name}:移动或重命名文件
  • rm {file}:删除文件
  • rm -rf {file/folder}:永久删除文件或文件夹(小心使用)
  • pwb:打印当前工作目录
  • cat or less or tail or head -n10 {file}:文件的标准输出内容
  • mkdir {directory}:创建一个空的目录
  • grep -inr {string}:在当前目录或子目录的文件中搜索一个字符串
  • column -s, -t <delimited_file>:在 columnar 格式中展示逗号分隔文件
  • ssh {username}@{hostname}:连接到远程机器中
  • tree -LhaC 3:向下展示三级目录结构(带有文件大小信息和隐藏目录信息)
  • htop (or top):任务管理器
  • pip install –user {pip_package}:Python 安装包管理器,安装包到~/.local/bin 目录下
  • pushd . ; popd ; dirs; cd -:在堆栈上 push/pop/view 一个目录,并变回最后一个目录
  • sed -i “s/{find}/{replace}/g” {file}:替代文件中的一个字符串
  • find . -type f -name ‘*.txt’ -exec sed -i “s/{find}/{replace}/g” {} \;:替换当前目录和子目录下后缀名为.txt 文件的一个字符串
  • tmux new -s session, tmux attach -t session:创建另一个终端会话界面而不创建新的窗口 [高级命令]
  • wget {link}:下载一个网页或网页资源
  • curl -X POST -d “{key: value}” http://www.google.com:发送一个 HTTP 请求到网站服务器
  • find <directory>:递归地列出所有目录和其子目录的内容

高级 & 不常用的指令

保留一个有用命令列表以备不需也是非常必要的,即使这些情况不常发生(如某个进程阻塞了几个网络端口)。以下我们将列出几个不常用命令:

  • lsof -i :8080:列出打开文件的描述符(-i 是网络接口的标记)
  • netstat | head -n20:列出当前打开的 Internet/UNIX 接口(socket)以及相关信息
  • dstat -a:输出当前硬盘、网络、CPU 活动等信息
  • nslookup <IP address>:找到远程 IP 地址的主机名
  • strace -f -e <syscall> <cmd>:跟踪程序的系统调用(-e 标记用于过滤某些系统调用)
  • ps aux | head -n20:输出目前活动的进程
  • file <file>:检查文件类型(例如可执行文件、二进制文件、ASCII 文本文件)
  • uname -a:内核信息
  • lsb_release -a:系统信息
  • hostname:检视你的机器的主机名(即其他电脑可以搜索到的名称)
  • pstree:可视化分支进程
  • time <cmd>:执行一个命令并报告用时
  • CTRL + z ; bg; jobs; fg:从当前 tty 中传递一个进程到后台再返回前台
  • cat file.txt | xargs -n1 | sort | uniq -c:统计文件中的独特字(unique words)数量
  • wc -l <file>:计算文件的行数
  • du -ha:在磁盘上显示目录及其内容的大小
  • zcat <file.gz>:显示压缩文本文件的内容
  • scp <user@remote_host> <local_path>:将文件从远端复制到本地服务器,或反过来
  • man {command}:为一个命令显示 manual(说明文档),但是通常这样不如谷歌搜索好用