一个多月的时间学习Linux的基础知识,看得是鸟哥的私房菜,看了有两遍吧。现在总结一下平时经常用到的知识。
date:
显示时间,更多的是用来产生一些时间格式的文件夹,如:生成日志的文件夹。
bc:
计算器,quit退出,一般用不到。
ctrl+alt+F1~F6可切换不同的文字界面,一般用于:如果一个界面死掉了,可以再切换另一个界面将其杀死,而不用重启计算机,很方便的。ctrl+alt+F7切换到文字界面。
当指令太长时可用'\'符号来延续到下一行。
shutdown -r now 立刻重启
shutdown -h now 立刻关机
shutdown -h +10 “guan ji le ” 十分钟后关机,并在屏幕上显示guan ji le
shutdown -h 20:35 到点关机
shutdown -c 取消已经进行的shutdown指令
ll ** 查看**的属性
w:写 ;r:读;x:可执行(只有当文件夹是可执行时才能够进入该文件夹)
r=4
w=2
x=1
一个文件的权限针对“三个人”而言:文件拥有者的权限(u)、文件所属的群组中他人的权限(g)、外人的权限(o)。
chgrp aa user 把当前user的群组的名称改为了aa
chown bb user 把当前user的拥有者的名称改为了bb
chown aa:bb user 把当前user的群组的名称改为了aa,拥有者的名称改为了bb
chmod 777 file 改变了file的权限为可读、可写、可执行
chmod -R 777 mulu 改变mulu文件夹下面所有文件的权限(chgrp、chown也可以有-R)
chmod r=rwx,g=rwx,o=rwx temp
chmod a+w temp
chmod a-x temp
当一个设置了SUID位的可执行文件被执行时,该文件将以所有者的身份运行,与就是说无论谁来执行这个文件,他都有文件所有者的特权,如果所有者的身份是root的话,那么执行人就有超级用户的身份。
SUID=4,SGID=2
chmod 4777 a.txt 权限变为 rwsrwsrwx
chmod 6751 a.txt 权限变为 rwsrwS--x (当设置了x位时,就用小s;没有设置x位时,就用大S)
路径:cd - 回到上一目录(很好用)
cd .. 回到上一层目录
cd ~回到用户根目录
pwd 显示当前工作目录
mkdir aa 建立一个名称为aa的文件夹
删除一切东西用: rm -rf bb 强制删除(超好用)
ls 列出当前目录下的东西
ls -a 隐藏的东东也会列出
ll 列出属性
cp 复制文件
cp -r 复制目录
cp -u 只在文件有所改变后才会进行复制。(用于备份文件,只有在不同时,才会进行备份)
scp 为远程复制
scp /home/aa.txt root@10.52.210.10:/home 传出文件
scp root@10.52.210.10:/home/bb.txt /home 传入文件
mv 移动文件
mv -r 移动目录
mv -u 只在文件有所改变后才会进行移动。
查看文件:
cat aa.txt
cat -n 显示行号
more less
head -n 10 aa 只显示aa文件的前十行
tail -n 10 aa 只显示aa文件的后十行
tail -f aa 动态显示aa后十行(经常用)
nl 显示行号
ln -s aa bb 类似与bb为aa的快捷方式(符号链接改变bb,那么aa也会改变。删除aa,那么bb则无效)
umask 用于指定当前用户所建文件和目录的默认属性
umask 0000 表示改变其默认属性为777“三个人”都是可读、可写、可执行(但是下次开机后就回复原来默认的)
(若想永远的改变umask的值,应在/root/.bashrc文件中加入 umask 0000 然后保存,再执行. .bashrc 即可)
文件或目录的查找
which
whereis
locate
find
硬盘与硬件管理
df -h 查看硬盘的总容量、已用容量、系统分区
ifconfig 查看ip
ifconfig eth0 192.168.120.23 netmask 255.255.255.255 broadcast 8.8.8.8 配置IP地址
du -sh 目录名 只显示该目录总的大小
wc -l 统计行数
wc -c 统计字节数
wc -w 统计字数
ssh root@10.52.210.10 登录远程计算机
md5sum 产生文件指纹,可以对比两个文件是否相同。也可以查看某一软件是否为正版
tab 补全
alias ll=‘ls -a -l’ 命名别名
echo $? 可以判断上一条指令是否正确,为0,则正确。为1,则有错误
shell脚本
变量的规则:
1)=链接的左右不能有空格
2)变量只能为字母、数字,并以字母开头
3)应用变量要加$
4)若有空格应用“ ” 或‘ ’。二者的区别:“ "会保留变量的特性;而‘ ’值是输出其中的字符
name=vbird
my="$name its me"
my2='$name its me'
my3="${name}itsme" 和变量相连要用{ }区分出来
echo $my (结果为vbirdits me)
echo $my2 (结果为$name its me)
echo $my3 (结果为nameitsme)
5)export a 则变量a可以在其他子程序中使用
6)unset a 取消变量
vi编辑器中的指令
一般模式下:
0 零 光标移动到本行的行首
$ 光标移动到本行的行尾
G 光标移动到该文件的最后一行
nG 光标移动到第n行
gg 光标移动到该文件的第一行
n<enter> 光标向下移动n行
n<空格> 光标向后移动n个
dd 删除光标所在行
yy 复制光标所在行
p 粘贴到光标的下一行
U 恢复上一步
ctrl + r 与U是相反的操作
. 重复前一个操作
编辑模式:
i 光标所在字符前插入
a光标所在字符后插入
o 光标的下一行插入
命令行模式:
:set nu 显示行号
:wq 保存退出 :q! 强制退出
/ab 在该文件中查找ab (n为查找下一个,N为查找上一个)
个人设定:
在root中,或cd ~中,总之是在当前用户的根目录下中的.bashrc文件中可以设定,如:命名别名、路径定义、umask的设定,保存之后要执行source .bashrc 才能生效。
ctrl+H 显示隐藏的东东
连续的指令 && 和 ||
command1, command2 全部执行两条指令
command1 && command2 只有当command1执行正确后才执行command2
command1 || command2 只有当command1执行错误后才执行command2
ctrl + C 中止
ctrl + D 结束输入
ctrl + Z 暂停当前指令
>a.txt 覆盖到a中
>>a.txt 累加到a的后面
tee a.txt 输入到a.txt中,并且在屏幕上显示,后面还可以再接其他的管线命令。
管线命令:
cut -d ":" -f 2 (以:为分割副,只显示出第2区块)
cut -c 1-20 (之显示出1到20个字符)
sort 以行为单位,比较首字符,默认按升序排序。
sort -r 绛序
sort -n 按数字大小进行排序
sort -n -r -t ":" -k 2 按:进行分块后的第二块按数字进行绛排序
grep -c ljg 输出含有ljg行的总数
grep -v ljg 输出不含有ljg的行
grep 'tea' /home/name1 /home/name2 可以在多个文件中列出
pgrep cmd 专门用于进程查询,只输出该指令的PID
uniq 重复的行只显示一个
uniq -d 只显示重复的行
tr -d ab 删除文件中的所有字符a,和字符b。而不是只删除ab字符串
tr '[a-z]' '[A-Z]' 将所有的小写字母转换为大写字母
tr 'ljg' 'tsh' 意味着把说有的l换为t,j换为s,g换为h。(注意:不是只把ljg换为tsh)
解压缩指令:
unzip name (用于*.zip)
uncompress name (用于*.z)
bzip2 -d name (用于*.bz2)
gzip -d name (用于*.gz)
tar中 -x是解压,-c是压缩,-z是后缀中有.gz
tar -zxvf name (用于*.tar.gz)
tar -xvf name (用于*.tar)
tar -cxvf name 压缩文件
可执行文件的属性中一定有x属性。./test.sh
declare声明变量
-a 数组
-f 函数
-i 整型
read name 从键盘上读取内容
echo $name 输出
./test.sh a b c d 其中文件名为$0, 参数a为$1, b为$2
if的使用:
if [ "$y" = "y" ] || [ "$y" = "Y" ]; (注意:[和“ ,”和]之间都要有空格)
then
......
fi
for循环
declare -i s
for (( i=i; i<=100; i=i+1)) (注意:这是有两个())
do
s=s+i
done
另一种for循环
LIST="tomy jony mary geoge"
for i in $LIST
do
echo $i
done
while循环
declare -i i
declare -i s
while [ "$i" != "101“ ]
do
s=s+1
i=i+1
done
sh -n test.sh 查看脚本的语法,若有错误则列出。
帐号管理:
/etc/passwd 用户帐号 /etc/shadow 密码 /etc/group 群帐号 /etc/gshadow 群密码
groups 显示出该帐号都存在与哪些组当中
groupadd -g 55 testing 建立一个GID为55的群组
groupdel testing 删除群组 (若有用户,则必须先删除用户)
新加一用户:
1)useradd -m ljg 建立一个用户,名称为ljg (-m 为生成根目录,不然则进不到ljg中)
2)passwd ljg 设置密码
userdel ljg 删除(只删除passwd和shadow中的东西)
user -r ljg 将用户的一切数据都删除
su 转换为root身份
su -
su ljg 切换为ljg身份
su -l ljg
su 进行身份转换时要输入对方的密码,但用sudo不能切换身份,但是可以在对方用话下进行一定的操作
sudo -u ljg shutdown -h now 并且只需要输入自己的密码。
at仅执行一次的使用方法:
1)输入 at 5:30 2014-06-01 回车 (at now +5 minutes, 也可一是hours、days、weeks)
2)进入at>命令模式,输入要执行的命令,shutdown -h now
3)ctrl + D则保存退出。并且退出之后显示该工作的编号如:job 3 at thu may 1 05:30:00 2014
4)atq 查看当前所有的at工作
5)atrm 3 删除上面的at工作。
crontab循环执行的使用方法:
输入crontab -e 进入crontab编译
输入命令的格式为: 分 时 日 月 周 命令 *表示所有数组都适用
如:59 23 1 5 * mail xiaozhu </home/test/test.txt 表示在每年的5月1日23:59都会把邮件test.txt的内容发送给xiaozhu
如:*/5 * * * * sh /home/test/test.sh 表示每隔5分钟执行一次
但当有多个任务都是每隔5秒执行一次,这样会增加系统在某一时刻的负担,可以这样
1,6,11,16.....51,56 * * * * cmd1
2,7,12,17.....52,57 * * * * cmd2 这样可以解决,其中的......不能省略,必须一个一个的列出
crontab -l 查看所有的crontab流程
crontab -r 删除所有的crontab数据。(若要删除某一条,用crontab -e进入编译中去删除)
* 代表所有可能
,隔开 1,5,9
- 制定范围 2-6
*/n 表示时间间隔频率
crontab -e 是处理用户例行性,即改变的是/usr/bin/crontab的内容
若要是设置“系统的例行性任务”直接vim /etc/crintab,按照已有的例子添加即可。
脚本的逻辑判断:
eq =
ne !=
lt <
gt >
le <=
ge >=
a and
o or
z 空字符串
n 非空字符串
ps -auxh | grep xxx 查看进程xxx (会列出用户名、PID、CPU和MEM的使用情况、tty1-6表示为本机登录者 pts/??表示为远程登录者、运行状态、开始运行的日期、运行的时间、指令名称)
ps后的运行状态
R 运行
S 中断
T 停止
D 不可中断
Z 僵死 (且ps后的指令名称中显示<defunct>) ps auxh | grep defunct 可以列出zombie进程
top中的第二行的zombie表示僵尸进程的个数
top动态显示进程的信息,默认每隔5秒刷新一次。
top -d 1 改变刷新时间为1秒一次
top -p 1278 只观察PID为1278
top | grep cmd 只观察指令cmd
who 显示登录时间
w 显示uptime和who的
last 显示近期用户或终端的登录情况
hostname 显示主机名
df -h 查看文件系统大小和使用情况
free -m 显示内存、SWAP的大小和使用情况
fdisk -l
command & 后台运行
time command 侦测一个进程所需要的时间
route -n 显示路由器
netstat -antlp 查看本机各端口的网络连接
diff 和 cmp 比较两个文件的不同之处
dmesg 显示开机信息
用户对话:
write 针对一个在线用户
wall 针对所有在线用户
mail 可以实现离线传输
杀死进程:
kill %工作号
kill PID
pkill -9 cmd (指令的名称可以只输入一部分)
pkill -u 用户名 可以杀死用户 (当userdel -r ljg,显示用户ljg目前已登录。可以用pkill -u来解决)
killall -9 cmd
xkill 用于关闭图像界面(当一软件死后,不能关闭窗口,可以这样做)
pstree 列出所有进程的关联,可以找出父进程
(若杀死不了一zombie进程,可以用pstree查找出其父进程,来杀其父进程)
所有的进程都存在于/proc中,以PID号为目录名。