linux基本原则:1、一切皆文件;2、配置文件保存为纯文本格式。
linux命令格式: 命令 选项 参数;多个选项可以组合,例如 -a -b等同于-ab; ls -l -a /etc/ 等同于 ls -la /etc/ 代表完整展示etc目录下文件(包含以.开头的隐藏文件)详情
linux命令类型(通过type 命令 查看分类):
内置命令(shell内置):help 命令 便可查看相关内置命令文档
外部命令:man 命令 可以查看外部命令相关文档;使用空格向下翻屏,使用b向上翻屏,使用j向下进一行,使用k向上进一行,查找选项使用/-加选项进行查找,比如/-l,出来后可以使用n查找下一个,退出使用q,帮助使用h
linux命令学习方式:查文档
一、ps显示进程
ps a 显示所有进程
ps -a 显示同一终端下的所有程序
ps -A 显示所有进程
ps c 显示进程的真实姓名称
ps -N 反向选择
ps e 显示环境变量
ps f 显示程序间的关系
ps -H 显示树状结构
ps u 显示指定用户的所有进程
ps -au 指定用户的所有进程
ps -aux 显示所有使用者的行程
ps -ef 查看所有进程
二、查看资源:
1、系统
uname -a 查看内核/操作系统/CPU信息
head -n 1 /etc/issue 查看操作系统版本
cat /proc/cpuinfo 查看CPU信息
hostname 查看计算机名
lscpu 查看CPU信息
lspci -tv 列出所有PCI设备
lsusb -tv 列出所有USB设备
lsmod 列出加载的内核模块
env 查看环境变量
2、空间资源
free -m 查看内存使用量和交换区使用量
df -h 查看磁盘空间利用大小,-h以易读的方式显示结果(即带单位,否则显示的数字为B)
du -sh <目录> 查看指定目录所占空间大小,-s递归整个目录的大小
grep MemTotal /proc/meminfo 查看内存总量
grep MemFree /proc/meminfo 查看空闲内存量
uptime 查看系统运行时间、用户量、负载
cat /proc/loadavg 查看系统负载
3、磁盘和分区
mount | column -t 查看挂接的分区状态
fdisk -l 查看所有分区
swapon -s 查看所有交换分区
hdparm -i /dev/hda 查看磁盘参数(适用于IDE设备)
dmesg | grep IDE 查看启动时IDE设备检测状况
4、网络
ifconfig 查看所有网络接口的属性
iptables -L 查看防火墙设置
route -n 查看路由表
netstat -lntp 查看所有监听端口
netstat -antp 查看所有已经建立的连接
netstat -s 查看网络统计信息
5、进程
ps -ef 查看所有进程
top 实时显示进程状态
6、用户
w 查看活动用户
id <用户名> 查看指定用户信息
last 查看用户登录日志
cut -d: -f1 /etc/passwd 查看系统所有用户
cut -d: -f1 /etc/group 查看系统所有组
crontab -l 查看当前用户的计划任务
7、服务
chkconfig --list 列出所有系统服务
chkconfig --list | grep on 列出所有启动的系统服务
8、程序
rpm -qa 查看所有安装的软件包
三、打包/解包:
tar -cvf 包名.tar /文件夹名 如:tar -cvf bag.tar /floder 将floder文件夹打包为bag.tar
-c:打包选项
-v:显示打包进度
-f:使用档案文件
四、修改文件 vim
vim file.py 用vim打开名为“file.py”的文件
insert 开始编辑模式
esc 退出编辑模式
home 跳到行开头
end 跳到行尾
:set ff=unix 修改文件中的换行符为unix格式
:set ff=dos 修改文件中的换行符为dos格式
:wq 退出并保存
五、复制文件到其他目录 cp
cp -r dir1 dir2 将dir1整个目录复制到dir2路径下
cp -r dir1/. dir2 将dir1目录下的文件全部复制到dir2路径下
若复制过程中询问是否覆盖,输入y回车便可,也可直接将-r改为-rf直接覆盖复制
cp参数:
-a: 通常用在复制目录时使用,保留链接、文件属性,并复制目录下的所有内容,等同于dpR参数组合
-d:复制时保留链接(相当于windows系统中的快捷方式)
-f:覆盖已经存在的目标文件而不给出提示
-i:在覆盖目标文件之前给出提示,要求用户确认是否覆盖
-p:除复制文件的内容外,把修改时间和访问权限也复制到新文件中
-r:若给出的源文件是一个目录文件,将复制该目录下所有的子目录与文件
-l:不复制文件,只生成链接文件
六、移动文件或将文件改名 mv
mv [选项] 源文件或目录 目标文件或目录
视mv命令第二个参数类型的不同完成不同功能,若第二个参数类型是文件则完成重命名操作,此时源文件(源目录)只能有一个,它将所给的源文件(源目录)重命名为给定的目标文件名;若第二个参数类型是目录则完成移动操作,源文件(源目录)可以有多个,它将各参数指定的源文件均移至目标目录中,在跨文件系统移动文件时,mv先拷贝,再将原文件删除。
mv参数:
-b:若需覆盖文件,则覆盖前先备份
-f:若目标文件已经存在则不进行询问而直接覆盖
-i:若目标文件已经存在则会询问是否覆盖
-u:update若目标文件已经存在且source比较新,才会更新
-t:指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况
实例:
1、mv a.log a.txt 将a.log改名为a.txt
2、mv a.txt b 将a.txt文件移动到b目录下
3、mv a.txt b.txt c.txt d 将a.txt、b.txt、c.txt移动到d目录下
4、mv -t /home/usr/target/ a.txt b.txt c.txt 将a.txt、b.txt、c.txt移动到/home/usr/target/目录下
5、mv -i a.txt b.txt 将文件a.txt改名为b.txt,若b.txt已经存在则询问是否覆盖
6、mv -f a.txt b.txt 将文件a.txt改名为b.txt,即使b.txt存在也是不经询问直接覆盖掉
7、mv dir1 dir2 若目录dir2不存在则将dir1改名为dir2;否则将dir1目录移动到dir2目录下
8、mv * ../移动当前文件夹下的所有文件到上一级目录
9、mv a/*.txt b 将当前目录的a子目录里的txt文件都移动到b子目录里
10、mv a.txt -b b.txt 文件被覆盖前做简单备份,前面加参数-b
七、删除文件或目录 rm
rm [选项] 文件
rm参数:
-f:忽略不存在的文件
-i:进行交互式删除
-r:将参数中列出的全部目录和子目录均递归的删除
-v:详细显示进行的步骤
八、定时任务 crontab
crontab -e 编辑定时任务
crontab -l 列出所有定时任务
定时任务格式
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表周日)
第一个*:0~59分钟,每分钟用*或者*/1表示
第二个*:0~23小时,每小时用*表示
第三个*:1~31日,每天用*表示
第四个*:1~12月,每月用*表示
第五个*:0~6,0代表周日,每天用* 表示
command:bash命令
说明:1、整数间的-指定一个整数范围,0-5表示整数0,1,2,3,4,5;2、用,隔开的一系列值指定一个列表,3,4,5表示整数3、4、5;3、用/可以用来指定间隔频率,比如0-59/2表示每两分钟,*/3为每三个月
九、处理僵尸进程
使用top命令查看有没有僵尸进程:
使用ps axf命令查看具体僵尸进程,找到僵尸进程的父进程,将父进程kill掉以后就可以关掉僵尸进程
十、修改文件夹权限(777为所有人可读写)
root权限下chmod 777 filepath
十一、后台运行命令并输出日志
1.nohup commmand > logpath 2>&1
command:bash命令
logpath:输出日志地址
举例:
nohup python3 test.py > out.log 2>&1 &
后台运行python脚本text.py并将日志输出到out.log中
2.ctrl+z 将正在前台运行的命令暂停后放到后台
fg 将后台任务切换到前台执行
bg 将一个在后台暂停的命令变成在后台继续执行;若后台有多个命令可通过bg %pid 将选中的命令调出
jobs -l 查看后台运行任务的状态并显示对应的pid
十二、查找文件/目录
find 目录 -name '文件/目录名称'
从“目录”下查找名字为“文件/目录名称”的文件或目录
实例:
find / -name 'girl.jpg'
从根目录查找名字为“girl.jpg”的文件
find /var/ -name 'www'
从“var”目录查找名字为“www”的文件夹
十三、用户管理
以下操作需要在root权限下进行
1.创建用户
adduser +用户名 此方法会在home目录下创建对应名称的文件夹
adduser test 添加test用户
useradd -c +描述 -d +用户主目录 -g +用户组 -m +用户名 创建一个名为(用户名)的用户并在(用户主目录)创建用户目录,帐号注释描述为(描述)
useradd -c "一个新账户" -d "/home/test" -g testgroup -m test 创建一个名为test用户组为testgroup的用户并创建一个用户主目录/home/test,帐号注释为“一个新用户”,-m与-d需搭配使用(否则会出现指定目录不存在的情况)
2.修改用户密码
passwd +用户名 修改(创建)对应用户的密码
passwd test 修改test的登录密码,要求密码不能少于8位
3.删除用户
userdel +用户名 删除对应用户但保留home目录下的文件夹
userdel test 删除test用户/home/test仍然保留
userdel -r test 删除test用户并删除/home/test文件夹
4.用户组
groupadd +组名 添加用户组
groupadd testgroup 添加testgroup用户组
groupdel +组名 删除用户组
groupdel testgroup 删除testgroup用户组
十四、常见问题
1.大部分常见命令运行时出现 “command not found...”:
此问题一般是因为系统的环境变量出现问题导致的,可用root用户通过运行下方命令进行修复
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2.运行sh文件时出现“syntax error: unexpected end of file”问题:
此问题是因为这个文件是在window系统编写,格式为dos,而linux系统需要的格式为unix,故解决方案如下:
①通过vi打开该sh文件
vi *****.sh
②输入:set ff=unix并回车
:set ff=unix
③输入:wq并回车
:wq