Linux 基础入门

404 阅读1分钟

常用基础命令

# 管道符 |
# 管道符左边命令的输出就会作为管道符右边命令的输入‘
# 如查看当前文件夹下的文件数量
ls -l | wc -l

# 尖括号 > 可以将数据从一个地方转移到另一个地方
# 如将当前文件夹下的文件名输出到xxx.txt里
ls > xxx.txt

# 查看命令文件的位置
which

# 查看程序文件的位置
whereis

# 查找文件位置(系统数据库)
updatedb
locate

# 列出所有状态为 `rc`的软件包
dpkg -l | grep '^rc'

# 清理包
sudo dpkg -P <package-name>

# 一次性清理
dpkg -l | awk '/^rc/{print $2}' | sudo xargs dpkg -P

# 将本地文件上传到远程(文件夹要加 -r)
scp <local_path> <user_name>@<adress_ip>:<remot_path>

# 从远程下载文件(文件夹要加 -r)
scp <user_name>@<adress_ip>:<remot_path> <local_path>

# 使用 sftp 上传、下载
sftp <user_name>@<adress_ip>
put <local_path> <remot_path> 
get <remot_path> <local_path>

# 生成SSH密钥
ssh-keygen -t rsa -C "xxx@xxx.com"

# ssh 免密登录(复制公钥到服务器)
# -rw------- authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ip_address>

使用 screen 和 rsync 后台拷贝文件与目录

# 新建 session
screen

# 列出当前多有session
screen -ls

# 转到后台快捷键
Ctrl + A + D

# 恢复到 xxx session,只有一个时可以不加=xxx
screen -r xxx

# 拷贝
# -a 参数表示存档模式,会把子目录、文件及文件的元信息(权限、修改时间等)一起拷贝过去
# -h 参数让拷贝过程输出的文件大小信息是方便人类读取的单位
# --preallocate 在写入前预分配DST文件
# --info=progress2 参数显示当前拷贝的总进度
# --partial 参数表示拷贝如果被意外中断的话,当前拷贝了一半的那个文件不会删除(断点续传)
# --append-verify 参数表示文件校验和中包含旧数据,和 --partial 一起用
rsync -ah --preallocate --info=progress2 [xxx] [xxx]

防火墙 ufw

# 允许SSH
ufw allow ssh

# 开启防火墙
ufw enable

# 查看状态
ufw status

# 允许 9090 端口
ufw allow 9090

# 删除已允许的端口
ufw delete allow 9090

磁盘命令

# 查看磁盘挂载信息
df -h

# 查看当前目录大小
du -sh *

# 查看所有磁盘
fdisk -l

# 磁盘分区操作
fdisk /dev/xxx

# 格式化为ext4分区
# -c 是检查设备上的坏块,会很久,嫌慢可以不加
mkfs -t ext4 -c /dev/xxx

# 查看磁盘UUID
blkid /dev/xxx

# 自动挂载分区(修改/etc/fstab文件)
# 文件中第五列为dump,是否备份,一般为否,值为0
# 文件中第六列为fsck,为检查顺序,值为0、1、2,后挂载的磁盘一般为2
vi /etc/fstab

# 挂载生效
sudo mount -a

# 设定硬盘在无操作10分钟后休眠
sudo hdparm -S 120 /dev/xxx

# 查看硬盘休眠状态
hdparm -C /dev/xxx

# 查看硬盘信息
hdparm -I /dev/xxx

# 安装硬盘检测工具
apt install smartmontools

# 查看硬盘信息
smartctl --info /dev/xxx

# 检查硬盘的健康状况
smartctl -a /dev/xxx

# 检测磁盘坏道
# -s 在检查时显示进度
# -v 执行时显示详细的信息
badblocks -s -v /dev/xxx

# 查看磁盘碎片信息
sudo e4defrag -c /mnt/xxx

# 整理磁盘碎片
e4defrag /mnt/xxx

系统服务

# 查看Linux系统版本
lsb_release -a

# 创建服务文件
systemctl edit xxx.service --full --force

# 启动,重新启动,停止,重新加载和检查服务(httpd.service)的状态
systemctl start <httpd.service>
systemctl restart <httpd.service>
systemctl stop <httpd.service>
systemctl reload <httpd.service>
systemctl status <httpd.service>

# 检查、开启、禁用系统引导时启动服务
systemctl is-enable <httpd.service>
systemctl enable <httpd.service>
systemctl disable <httpd.service>

# 查看开机明细
systemd-analyze blame

# 查看已使用端口情况
netstat -nultp

# 查看端口是否被占用
sudo netstat -anp | grep <port>

清理缓存

# 将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件
sync

# 清除page cache
sh -c "echo 1 > /proc/sys/vm/drop_caches"

# 清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache
sh -c "echo 2 > /proc/sys/vm/drop_caches"

# 清除pagecache和slab分配器中的缓存对象
sh -c "echo 3 > /proc/sys/vm/drop_caches"

压缩、解压文件 tar

# -z 以gzip命令压缩/解压缩  
# -c 建立一个压缩文件的参数指令(create),后缀是.tar
# -x 解压
# -v 显示执行过程
# -f 指定解压的文件
# -j 以bzip2命令压缩/解压缩

# 压缩
tar –zcvf <name>.tar.gz <path>

# 解压
tar –zxvf <name>.tar.gz

软件安装

# 生成 Makefile
./configure --enable-optimizations

# 编译源代码
make

# 安装
make install

# 删除临时文件
make clean
make distclean

# 查看已注册python列表
 update-alternatives --display python

# 在update-alternatives工具中注册 python2.7且优先级为1
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

#  在update-alternatives工具中删除 python2.7
update-alternatives –remove python /usr/bin/python2.7

# 切换python版本
update-alternatives --config python

用户与权限

Linux 中,每个文件拥有以下三种权限

  • 目录必须拥有 "x" 权限才可查看其内容。 很多时候,执行权限 "x" 对于目录而言也叫浏览权限。仅有 "r" 权限是无法查看目录内容的(因为连访问都做不到)。
权限对文件的影响对目录的影响
r(读取)可读取文件内容可列出目录内容
w(写入)可以修改文件内容可在目录创建、删除文件
x(执行)可以作为命令执行可访问目录内容

UGO模型的权限

  • 第1位是文件类型描述符,"d"表示目录,"-"表示文件
  • 第2-4位"rwx"是U模型权限,可读可写可执行
  • 第5-7位"r-x"是G模型权限,可读可执行,不可写
  • 第8-10位"r-x"是O模型权限
# 增加一个新用户
useradd -m <username>
useradd -m -G <group_name> <username>

# 为用户指定shell
usermod -s /bin/bash <username>

# 为用户设置密码
passwd <username>

# 切换用户
su <username>

# 删除用户
userdel -r haha

# 查看所有用户
compgen -u
cat /etc/passwd

# 用户组列表文件
/etc/group

# 修改sudoers,允许用户使用sudo命令
vi /etc/sudoers
yuchuan ALL=(ALL)       ALL

# 显示用户所属的用户组
$ groups

# 命令 chown 用以改变文件的所属用户
# -R递归地修改目录下所有文件的所属用户
$ chown <username> <filename>

# 命令 chgrp 用以改变文件的所属组
# -R递归地修改目录下所有文件的所属组
$ chgrp <groupname> <filename>

# 命令 chmod 用以修改文件的权限
# u、g、o     分别代表用户、组、其他
# a           代表ugo
# +、-        代表加入或删除对应权限
# r、w、x     代表三种权限
# -R          递归地修改
$ chmod <mode> <filename>
$ chmod go-w ./log