一、ssh服务

安装
  • 查看ssh是否安装 输入命令:rpm -qa|grep ssh 如果没有安装SSH则可以输入:yum install openssh-server
  • 启动SSH服n务 service sshd start
  • 设置ssh为开机启动 输入命令chkconfig sshd on 即可。 注:若是chkconfig sshd off则禁止SSH开机启动。 也可以使用systemctl来开启自启动, systemctl enable sshd
配置
  • 修改端口号:修改/etc/ssh/sshd_config文件,找到port修改即可
简单的使用
  • 连接服务器ssh -p [port] user@host
  • 使用scp scp -P port src des(user@host:path)

三、让程序在后台启动

思路:当用户注销或者断开网络的时候,终端会收到HU(hangup)信号从而关闭其所有的子进程。因此解决方案就有两种,要么让进程忽略HUP信号,要么让进程运行在新的会话里面从而成为不属于此终端的子进程。

  • 使用nohub命令 让提交的命令忽略hangup信号

使用范例

1
nohup ./redis-server  ../redis.conf >/dev/null 2>&1 &

其中2表示标准错误输出 结尾需要加&,如果不加,仍有可能无法使用终端。

四、挂载存储媒体

  1. mount命令 默认的情况下是显示所有当前系统中挂载的设备 如果想手动在虚拟目录中挂载设备可以使用如下的命令

    1
    
    mount -t type device directory
    

    mount的命令部分参数

    参数 描述
    -a 挂载/etc/fstab文件中指定的所有文件系统
    -f 使用mount命令模拟挂载设备,但不是真的挂载
    -F 和-a参数一起使用,将会并行地挂载所有的文件系统
    -v 详细模式,将会说明挂载设备的每一步
    -s 忽略该文件系统不支持的挂载选项
    -r 将设备挂载为只读的
    -w 将设备挂载为只写的
    -o 给文件系统添加特定的选项
    -o参数允许在挂载文件系统的时候添加一些额外选项,以下是常用的选项
    ro:按只读的挂载
    rw:按读写允许的挂载
    user:允许普通用户挂载文件系统
    check:挂载文件系统的时候不进行完整性校验
    loop:挂载一个文件

可以使用mount命令将一个iso文件直接挂载在虚拟目录中

1
mount -t iso9660 -o loop file.iso mnt
  1. umount命令 用于卸载文件系统 umount [directory|device] 如果显示设备繁忙,无法卸载设备 使用lsof命令获取使用它的进程信息 lsof yourdevice

五、vim编辑器使用

:!cmd 不退出vim 执行命令 cmd

:r !cmd 不退出vim执行命令cmd,并将cmd的输出内容插入当前文本中。

:shell 切换到shell里(此时并没有退出vim,可以理解成vim转入后台),你可以在shell中做任何操作,退出shell(比如用exit)后,会切换回原来的vim中

移动光标

vim移动光标的命令包括:

  • 上、下、左、右键,一次一个字符
  • 前进或者后退一个文本块,一次一个单词,句子或者段落
  • 在文件中一次一屏地前进后退
单一地移动目标

hjkl,这4个位于键盘中心的键可以移动光标:

  • h表示向左移动
  • j表示向下移动
  • k表示向上移动
  • l表示向右移动

当然你也可以使用方向键、+和-做上下移动。

数值参数

你可以在移动命令的前面加上数字。例如命令4l表示向右移动四个字符,就像按了4次l一样。

在一行中移动

vim可以设置与右边界的距离,以便自动插入换行符。这个选项是wrapmargin,使用 :set wm=10,可以将其设置为10个字符。
两个用于在行中移动的命令是

  • 0,移动到一行的开头

  • $, 移动到一行的结尾

    可以在vim编辑器中显示行号,命令模式下使用:set nu

    按照文本块来移动

    你也可以按照文本块来移动光标:单词、句子或者是段落都可以。w命令使光标移动一个词,符号与标点也算是一个单词(注意:如果文本中包含中文字符可能就会出现不同的效果)。
    具体的命令如下:

    • w,光标移动一个单词
    • W,光标移动一个单词,但是不算符号和标点。
    • b,光标后退一个单词
    • B,光标后退一个单词,但是不包括符号和标点。
    • G,移动到特定的行,如果只是G,则会移动到文件的结尾,使用 1G移动到文件的首行。
      上述的几个命令都是支持数值参数的。
简单的编辑

当你在文件中输入文字时,很少一次就能尽善尽美,可能会有错字或者想修订词句,有的时候你的程序也可能会出现错误。在vi中,只需要几个简单的键,就可以做出这些动作:i表示删除,a表示添加,c表示更改,d表示删除。移动和复制文本,需要用到两个命令。移动时先用d删除,再使用p进行放置,复制是先用y做copy的操作,在使用p进行放置。

命令复习

表一:编辑命令

文本对象 更改 删除 复制
一个单词 cw dw yw
两个单词,不包括标点符号 2cW或c2W 2dW或d2W 2yW或y2W
后退三个单词 3cb或c3b 3db或d3b 3yb或y3b
一整行 cc dd yy
到一整行的结尾 c$或C d$或D

七、基本命令使用及其详解

ls命令

在linux系统中,使用ls命令按时间排序文件,其实很简单,如下: ls -tr 即可按时间排序当前目录下的文件。

附,ls命令的参数中文详解: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 -c 输出文件的 i 节点的修改时间,并以此排序。 -d 将目录象文件一样显示,而不是显示其下的文件。 -e 输出时间的全部信息,而不是输出简略信息。 -f -U 对输出的文件不排序。 -g 无用。 -i 输出文件的 i 节点的索引信息。 -k 以 k 字节的形式表示文件的大小。 -l 列出文件的详细信息。 -m 横向输出文件名,并以“,”作分格符。 -n 用数字的 UID,GID 代替名称。 -o 显示文件的除组信息外的详细信息。 -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。 -q 用?代替不可输出的字符。 -r 对目录反向排序。 -s 在每个文件名后输出该文件的大小。 -t 以时间排序。 -u 以文件上次被访问的时间排序。 -x 按列输出,横向排序。 -A 显示除 “.”和“..”外的所有文件。 -B 不输出以 “~”结尾的备份文件。 -C 按列输出,纵向排序。 -G 输出文件的组的信息。 -L 列出链接文件名而不是链接到的文件。 -N 不限制文件长度。 -Q 把输出的文件名用双引号括起来。 -R 列出所有子目录下的文件。 -S 以文件大小排序。 -X 以文件的扩展名(最后一个 . 后的字符)排序。 -1 一行只输出一个文件。

ls实现列文件按时间排序

  1. ls -lt 时间最近的在前面

  2. ls -ltr 时间从前到后

  3. 利用sort

    ls -l | sort +7 (日期为第8列) 时间从前到后 ls -l | sort -r +7 时间最近的在前面

    alternatives

    alternatives是Linux下的一个功能强大的命令。只能在root权限下执行。如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置。

alternatives常用于同一个系统中安装同一软件的多个版本。

chown

改变文件的属主

1
chown group:user files
sed
[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
awk和gawk

ps -ef|grep ssh |awk '{print $1}'

$0 代表整个文本行 $1 代表文本行中的第一个数据段 $2 代表文本行中的第二个数据段 $n 代表文本行中的第n个数据段

数据字段在文本行中都是通过字段分割符来分割的,默认的分割符是空白字符,例如空格和制表符

ps -ef|grep ssh |awk -f filename

将需要执行的脚本放在文件中

awk允许使用BEGIN关键字来指定特定的程序脚本,这段脚本会在awk读取数据之前执行,同样的, 还可以使用END关键字来指定处理数据后执行的脚本

ps -ef|grep ssh|gawk 'BAGIN {print "Start to process"} {print $2} END {print "finished to process "}'

useradd添加用户
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#创建用户并添加到组中
useradd -d /home/newuser -m newuser -g group
#以追加方式将用户添加到指定的组中
usermod -a -G group  user
#将用户添加到sudoers列表中
vim /etc/sudoers
#也可以使用visodu命令

#添加一行user ALL=(ALL) ALL
#或者使用命令将其加到sudo用户组中
sudo usermod -G sudo user



#删除一个用户
sudo deluser user --remove-home
su命令使用
  1. 命令作用 作用是变更为其他使用者的身份

  2. 使用方式

    1
    2
    
    #使用方式
    su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
    
  3. 参数说明 -f,-fast 不必读取启动文件,仅仅用于csh或tcsh两种shell -l , -login:加了这个参数,环境变量会重新刷新,工作目录也会改变,如果没有指定USER,缺省情况是root。 -c command:变更账号为USER,并执行指令command,然后再切换回原来的用户。 4.使用说明 su 切换到其他用户,但是不切换环境变量 su - 完整的切换到一个用户环境

chkconfig命令

man chkconfig

systemctl命令
sudo systemctl enable ssh
#说明:sudo是提升权限,systemctl是服务管理器,enable是systemctl
#的参数,表示启用开机自动运行,ssh是要设置的服务名称。

sudo systemctl disable ssh
#说明:sudo是提升权限,systemctl是服务管理器,disable是systemctl
#的参数,表示禁止开机运行,ssh是要设置的服务名称。
使用passwd 命令修改用户密码
1
2
passwd #修改root 用户密码
passwd user_name #修改指定用户名密码
Make 命令简单使用

make -j n 启用多核编译,提高编译的速度,n表示启用几个job,省略表示不限制

八、安装zsh替代原有的bash

  1. 安装zsh

    1
    2
    
    #for redhat/centos
    yum install zsh
    

#for ubuntu apt-get install zsh

#apt install zsh

2. 安装git,如果系统未安装git,需要先安装git
```bash
yum install git

apt-get install git
  1. 安装oh-my-zsh,使用已有配置

    1
    
    sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    

九、移除自带的openjdk

1
2
3
rpm -qa | grep java 

rpm -e –nodeps 

[root@hadoop-master tools]# rpm -qa | grep javaweizhunweizhun java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2016f-1.el7.noarch java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64 python-javapackages-3.4.1-11.el7.noarch
[root@hadoop-master tools]# rpm -e –nodeps java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64 [root@hadoop-master tools]# rpm -e –nodeps java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64 [root@hadoop-master tools]# rpm -qa | grep java javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2016f-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch

十、安装中文文档

查看系统中是否已经安装了中文文档

rpm -qa|grep man.*zh

执行安装命令

1
sudo yum install man-pages-zh-CN.noarch

编辑配置文件 vim .bashrc

1
2
3
#在.bashrc中增加:
alias cman='man -M /usr//share/man/zh_CN'         
#source .bashrc          //在命令行执行,为了使刚刚添加的alias生效

OK!现在就可以使用中文版的man了,在这里是cman,此时,你发现你可以用自带的man,还有安装有中文的cman了 解释:man -M 路径 定义一组查找man手册页的目录。如果没有指定此参数,系统环境变量 MANPATH将使用。 如果查无到此环境变量,则按默认 /etc/man.config 文件中指定的查找。一个空的 MANPATH 子字 符串表示使用默认清单。 alias是为一个命令设置别名。

十一 、设置应用程序的自启动

  1. 可以通过修改/etc/init.d/rc.local文件,即在文件中添加程序的启动命令 优点:此时尚未登录用户,启动服务使用的是su,相当于sudo
  2. 可以修改/etc/profile 文件,在最下面添加启动服务的命令。
查看文件的占用大小

du -sh /*

十二、Yum命令

  1. yum install 它安装单个软件,以及这个软件的依赖关系

  2. yum groupinstall 它安装一个安装包,这个安装包包涵了很多单个软件,以及单个软件的依赖关系。

    十三、CentOS7安装图形界面

    1
    
    yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
    

ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

如果需要在Windows上面连接远程桌面,使用如下方式
```bash
yum install  epel* -y
yum --enablerepo=epel -y install xrdp

启动xrdp,并设置开机自启

1
2
3
4
5
6
7
8
systemctl start xrdp
systemctl enable xrdp

#配置防火墙
sudo firewall-cmd --permanent --add-service xrdp

#或者
firewall-cmd --permanent --zone=public --add-port=3389/tcp

安装vncserver yum install tigervnc-server -y

十四、安装神器thefuck

1
2
3
sudo apt update
sudo apt install python3-dev python3-pip
pip3 install --user thefuck

安装后在bashrc配置alias fuck='eval $(thefuck $(fc -ln -1)); history -r' .zshrc配置eval "$(thefuck --alias)" 注意thefuck的路径应该以实际的安装路径为准。

十五、清理僵尸进程

1
2
#查看僵尸进程的进程ID
ps -e -o ppid,stat|grep Z

十六、安装NVIDIA显卡驱动(以Ubuntu系统为例)

  1. 官网下载驱动http://www.nvidia.cn/Download/index.aspx?lang=cn
  2. 电脑重启 ctl+alt+F2进入字符界面,关闭lightdm服务,最新的Ubuntu(18.04)可能默认使用的gdm,使用systemctl stop gdm关闭gdm服务。
  3. 卸载旧的驱动文件sudo apt-get remove --purge nvidia-*
  4. 执行驱动的安装文件,进行驱动安装

十七、刷新字体的命令

fc-cache -fv

十八、Ubuntu 18.04配置apt的安装源

这里使用阿里的源,修改/etc/apt/sources.list文件

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

十九、配置pip安装的源

pip是Python的包管理器,可以通过它来下载一些依赖的包,但是在国内下载的时候速度很慢并且很容易超时,配置一下国内的源,这里使用阿里的源 创建配置文件~/.pip/pip.conf

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com

二十、CentOS 使用

  1. yum 命令的使用
    • yum 命令和Ubuntu 中的apt命令一样都是包管理器。
    • yum install your-soft-ware:安装一个软件
    • yum -y list your-soft-ware:这里可以通过模糊查询的方式,查询对应的命令的所在的包名。例如: yum -y list java*可以列出所有的包含java关键字的包的名字。