Linux学习笔记 - Shell脚本编程实例
下面的例子基本上都是上面的知识点,比较扩展一点的就是awk
命令的用法,下面代码仅作参考,写的不好,请见谅;错误的地方烦请指出,不胜感激!
1、测试Apache服务是否启动,若没有启动,则启动Apache服务
|
|
2、判断某个文件属于什么类型的文件
|
|
3、踢出用户的脚本
|
|
4、显示用户的信息
|
|
5、加减乘除的脚本
|
|
6、打印出1到10之间的平方数
|
|
|
|
7、累加求和(使用shift命令)
|
|
下面的例子基本上都是上面的知识点,比较扩展一点的就是awk
命令的用法,下面代码仅作参考,写的不好,请见谅;错误的地方烦请指出,不胜感激!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
什么是Jekyll,简单地说,它是一个静态博客网站;详细的说,请看Jekyll中文官网,请点击Jekyll中文官网。至于用法,请访问DOCUMENTATION。
有时候,你明明知道有官方的说明文档,却总是以为不如去百度,Google来的方便,不断的变换关键词去搜索,而且还要去理解别人写的文档(没准他也不明白),其实你只要静下心来好好将官网文档看一遍,你会发现好多问题就解决了,还是不懂,再搜索时也会一眼辨出是不是你要的内容,这样会更加省时,而且学得扎实。
多说是什么?
多说是追求最佳用户体验的社会化评论框,为中小网站提供新浪微博、QQ(QQ空间和腾讯微博)、人人、开心网、豆瓣、网易微博、搜狐微博、百度、淘宝、Google等多帐号登录并评论功能。它帮你搭建更活跃,互动性更强的评论平台。具有众多实用特性,功能强大且永久免费。
当然上面的文字不是我写的,“多说”自己说的,请查看。
有人就会说了,既然上面的内容都能在官网查到了,我还要你干嘛?没错,对于更权威的文档,我是很有必要推荐大家看的,而这里我仅仅是将本人搭建轻博客的过程做一个记录,一来方便自己今后查看,二来给你做一个参考,而且前一个目的才是主要的,仅此而已。
Jekyll是比较简单地一个静态博客框架,当然有在这基础上增强的jekyll-bootstrap项目,有兴趣的可以去了解一下,搭建jekyll-bootstrap默认就有主题、评论等增强功能,我之前也搭建过,但是感觉功能太全了,也就没有了自定义的乐趣了,而且它默认的评论系统是disqus(国外比较强大的一个评论系统),毕竟是国外的,对于本地化的效果不是很好,比如QQ、微博分享及账号方面,还是国内的评论系统比较合适,于是,我就选择了多说评论系统。
首先看一下Jekyll的项目目录
还是简要介绍一下各个目录的用途。
.git
git版本控制器CNAME
GitHub Pages自定义域名用的_config.yml
Jekyll配置文件_includes
包含文件的,比如说网页的Header,Footer等重复利用文件_layouts
网页HTML文件_posts
你的文章(markdown格式)_site
生成的文章html文档assert
文档目录,比如存放首页LOGO、图片等css
样式表index.html
首页文档,当然也可以添加About、Tag等页面直接通过jekyll serve
,然后访问0.0.0.0:4000
就可以访问你的博客网站了,如果懂一点css和设计,简单修改一下css/main.css
文件就可以设计一个漂亮的首页了。
加上多说评论框,将多说的通用代码贴到你的页面<body>
之间就OK了,下面是多说的通用代码。_注:将下面代码写到_layouts/default.html
文件中的body标签之间,至于放到哪个div下,自己决定_ 。
这段代码有4个地方要填
data-thread-key
填上
data-title
填上
data-url
填上 your web site/
short_name
注册多说时填写的二级域名
网址填上你自己的域名,当然也要写到CNAME
文件中,使用GitHub Pages功能,访问你的Blog。不明白的请看Github Pages,下面是访问www.linux2me.com
的首页效果。
当然我这个是比较难看了,没有网站前端基础,就是为了体验一下,胡乱弄了一个,文章也是胡乱导了几篇进去。
到此,属于你的轻博客也就搭建完成了。在多说的控制平台中,可以看到评论及文章,以及其数量的统计。
注意
data-title
、data-url
只是为了在多说的控制平台上更方便地控制,其实可以不填。但是data-thread-key
肯定要区分开,不然多说就不知道评论在哪个页面上显示了,那可就乱了。
来显示,当然图片要放到assert目录下<img src="/assert/logo.png" alt="logo"/>
标签实现,加到_layouts/default.html
就OK了。前段时间看了几章《Linux命令行与Shell脚本编程大全》一书,针对自己不太了解的地方记录笔记如下,方便以后自己查阅。
man bash
命令可以查看软链接可以通过cp -s
来创建,也可以使用ln -s
来创建;而硬连接就是创建一个独立的文件,通过cp -l
或是默认的ln
命令来创建。
tail -f
保持活动状态查看,通常应用于查看log信息ps -ef
ps l
--forest
(层级)kill PID
,例如,kill 3940
killall http*
,杀掉所有http进程例如:mount -t vfat /dev/sdb1 /media/a
,其中vfat(windows的文件格式),也可以替换成ntfs(windows的文件格式)、iso9660(CD-ROM)
ro:read-only
rw:read-write
user:允许普通用户挂载文件系统
cheak=name:挂载文件系统时不进行完整性检验
loop:挂载一个文件
例如:mount -t iso9660 -o loop KDE4-LIVE-DVD_32.iso mnt
,把文件挂载到mnt目录下。
eg1. 对/etc/passwd文件根据用户ID进行数值排序
sort -t ':' -k 3 -n /etc/passwd
eg2.查看目录下哪些文件占用空间最多
du -sh * | sort -nr
列举几个例子:
tar -cvf test.tar test1/ test2/
tar -tf test.tar
tar -xvf test.tar
tar -zxvf test.tar.gz
查看全局变量,系统环境变量一律使用大写字母。
unset
/etc/profile
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
useradd命令用于添加新用户,当然不是讲这个功能。
useradd -D 查看你的Linux系统中系统默认值。
信息中有一项内容为:SKEL=/etc/skel
允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模版。
默认情况下,useradd不会创建HOME目录,useradd -m
创建HOME目录,并将/etc/skel复制过来。
userdel -r test
同时删除test用户的HOME目录用于设置默认文件权限,设置用户创建文件和目录的默认权限。
umask 022表示从对象的全权限值中减去022权限,则表示新创建的文件的默认权限为666-022=644(-rw-r-r),新创建的目录权限为777-022=755(drwx-rx-rx)。
sudo vim /etc/default/grub
修改TIMEOUT值,然后sudo update-grub
生效sudo apt-get install preload
装完重启电脑,完成。#用官方apt-fast代替apt-get加速更新
sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
sudo apt-get install apt-fast
hostname -d
显示所属域名;hostname -f
显示完整的主机名和域名;hostname -i
显示IP地址ethtool -i
显示一个特定网卡的驱动信息(在检查软件兼容性时尤其有用)ethtool -p
启动一个适配器指定行为ethtool -s
显示网络统计信息netstat -g
查询该主机订阅的所有多播组(网络)netstat -nap | grep port
显示使用该端口的应用程序idnetstat -tcp
显示所有的TCP连接netstat -udp
显示所有的UDP连接netstat -a
显示所有的连接学会这些命令,你就可以熟练的使用Git工具了,什么?想精通,那是不可能的。
基本上,Git就是以下面的命令顺序学习的。文中笔记是从廖雪峰老师的Git教程中总结出来的,方面查阅命令。详细原理请看Git教程。
git config --global user.name "Your Name"
设置你的仓库用户名(用于标识提交者)git config --global user.email "email@example.com"
设置你的仓库邮箱(用于标识提交者)git init
初始化一个git仓库git add --all
添加所有更改的文件git add filename1
当然可以指定添加filename1git commit -m "commit message"
添加更改的信息,必须要有,不然报错,不建议不加。git status
查看git当前状态git diff filename1
查看filename1到底修改了哪些内容git log
查看最近的提交日志git log --pretty=oneline
单行显示提交日志git reset --hard commitID
利用git log
得到的commitID返回版本git reset --hard HEAD^
回到上一个版本git reflog
查看命令的历史,可以找到git log
看不到的commitID,因为git log
只显示当前的提交日志,如果你提交了一次,退回版本后又后悔了,就能查看上次提交的commitIDgit checkout -- filename1
利用版本库中的版本替换工作区中的文件。功能有2:git add
命令添加到暂存区)git reset HEAD filename1
撤销add,回到工作区git rm filename1
删除文件git remote add origin https://github.com/pengloo53/learngit.git
将本地库关联到github远程库上git push -u origin master
第一次推送的时候要加上-u
参数,可以将本地库的master分支与远程库的master分支关联起来;下次提交就不需要加-u
了。git clone https://github.com/pengloo53/learngit.git
克隆远程库到本地git checkout -b dev
创建dev分支并切换到dev。相当于git branch dev
、git checkout dev
两条命令。git branch
查看当前分支git merge dev
合并指定分支到当前分支,如,你现在master分支,那么执行命令就将dev分支合并到了master分支上。git branch -d dev
删除dev分支git log --graph --pretty=oneline --abbrev-commit
查看分支合并图git merge --no-ff -m "merge with no-ff" dev
禁用「Fast forward」,也就是保留分支的相关信息。git stash
将工作区现场储藏起来,等以后恢复后继续工作。通常用于处理更为着急的任务时,例如:bug。git stash list
查看保存的工作现场git stash apply
恢复工作现场git stash drop
删除stash内容git stash pop
恢复的同时直接删除stash内容git stash apply stash@{0}
恢复指定的工作现场,当你保存了不只一份工作现场时。git branch -D feature-vulcan
强行删除分支。用于不需要合并,就地删除的情况。git remote
查看远程库的信息,一般返回origin。git remote -v
查看远程库的详细信息。git push origin master
将本地master分支推送到远程master分支。git clone https://github.com/pengloo53/learngit.git
将远程库克隆到本地,默认只能看到master分支。git checkout -b dev origin/dev
创建远程dev分支到本地git pull
将远程分支的最新内容抓取下来。git branch --set-upstream dev origin/dev
将本地dev分支与远程dev分支之间建立链接。 git push origin branch-name
推送自己的修改; git branch --set-upstream branch-name origin/branch-name
); git push origin branch-name
推送就能成功!git tag v1.0
给当前分支打上标签git tag
查看所有的标签,按时间顺序列出。git log --pretty=oneline --abbrev-commit
缩略commitID并单行显示提交信息git tag v0.9 commitID
通过上一条命令查看commitID,然后打上标签。用于忘记打标签的情况,因为标签其实就是只想某个commitID的指针,默认情况下,标签打在最新的提交上。git show v0.9
查看标签信息。git tag -a v0.1 -m "version 0.1 released" commitID
创建带有说明的标签,-a
指定标签名,-m
指定说明文字。git tag -d v0.1
删除标签v0.1git push origin v1.0
推送标签1.0到远程git push origin --tags
推送所有的标签到远程git push origin :refs/tags/v0.9
删除远程标签,但是前提是要先在本地删除对应标签。git config --global color.ui true
让Git显示颜色.gitignore
在这个文件里编辑你要忽略的文件,并提交到Git中,就可以忽略特殊文件的检查。如将*.db
写入.gitignore
文件中,将忽略所有db文件。可以参考github收集的所有.gitignoregit config --global alias.st status
将status的别名设置成st,那么git st
=git status
。git config --global alias.unstage 'reset HEAD'
那么git reset HEAD filename
=git unstage filename
git config --global alias.last 'log -1'
敲git last
就显示最后一次提交了。sudo apt-get install git
安装Git; sudo adduser git
添加Git用户;sudo git init --bare sample.git
初始化git仓库;sudo chown -R git:git sample.git
修改仓库的所属用户为git;git:x:1001:1001:,,,:/home/git:/bin/bash
改成git:x:1001:1001:,,,:/home/git:/bin/git-shell
,为了禁用shell登录。git clone git@server:/director/sample.git
克隆Git服务器上的仓库#!
指定执行脚本的shell#
注释行$
,如echo $PATH
,打印PATH变量的值将命令执行结果的值赋给变量
TIME=`date`
unset
删除变量
位置变量,ls -l file1 file2 file3
$0
表示程序的文件名ls -l
$1
表示第1个参数值,也就是file1$2
表示第2个参数值,也就是file2$3
表示第3个参数值,也就是file3$9
表示第9个参数值特殊变量
$*
表示这个程序的所有参数$#
表示这个程序参数的个数$?
执行上一个命令的返回值(0为执行正常,非0为执行错误)$$
这个程序的PID$!
执行上一个后台命令的PID执行脚本
sh filename.sh
执行脚本sh -x filename.sh
可以显示脚本执行过程sh -n filename.sh
不执行,只检查语法错误read
从键盘读入数据后,赋给变量expr
对整数型变量进行算术运算expr 3 + 5
注:加号前后有空格expr $var1 - 5
减expr $var1 / $var2
除expr $var3 \* 10
乘test
变量测试语句
test str1=str2
测试是否相等test str1
测试是否非空test -n str1
测试是否非空test -z str1
测试是否为空test
文件测试语句
test -d file
指定文件是否为目录test -f file
指定文件是否为常规文件test -x file
指定文件是否可执行test -r file
指定文件是否可读test -w file
指定文件是否可写test -a file
指定文件是否存在test -s file
指定文件大小是否为0test
变量对比语句
test int1 -eq int2
判断int1 == int2
test int1 -ge int2
判断int1 >= int2
test int1 -gt int2
判断int1 > int2
test int1 -lt int2
判断int1 < int2
test int1 -le int2
判断int1 <= int2
test int1 -ne int2
判断int1 != int2
exit
退出语句
awk
命令
awk -F 分隔符 '命令'
awk -F : '$3==0 {print $1}' /etc/passwd
检测系统中UID为0的用户awk -F : 'length($2)==0 {print $1}' /etc/shadow
检测系统中密码为空的用户if ... then
语句
if test 1 -lt 2
then
echo "YES"
else
echo "NO Possible"
fi
For ... done
语句
格式:
for 变量 in 名字表
do
命令列表
done
select
循环语句
格式:
select 变量 in 关键词
do
command1
...
commandn
done
case ... esac
格式:
|
|
While
循环格式:
|
|
shift
命令,参数向左移一位,也就是$#
减一关于du
和df
之类的命令这里就不介绍了,这里主要介绍的是如何添加磁盘和分区、如何添加swap分区以及磁盘配额的内容。
总共分为4大步。
fdisk
,划分分区。
fdisk -l /dev/sdb
,查看磁盘分区情况fdisk /dev/sdb
,对磁盘进行操作,见下面基本操作m
帮助p
打印分区表n
增加新的分区t
改变分区文件系统IDL
查看文件系统IDd
删除分区w
保存分区表q
退出(不保存)mkfs
,创建文件系统。
mkfs.ext3 /dev/sdb
将分区格式化为ext3文件系统类型mount
,挂载分区。
mount /dev/sdb /mnt
将sdb分区挂载到mnt目录下df -h
查看系统磁盘,可以看到mnt分区
注意:我这是在虚拟机中测试的
写入配置文件,编辑/etc/fstab
。文件的内容信息格式如下;
物理分区名 | 挂载点 | 文件系统 | 缺省设置 | 是否检测(1:检测;2:检测) | 检测顺序(0:是否检测;1:优先检测;2:期后检测) |
LABEL=1 | / | ext3 | default | 1 | 2 |
/dev/sda1 | / | ext3 | default | 0 | 0 |
/dev/sdb1 | /web | ext3 | default | 1 | 1 |
e2label /dev/sdb1
检测是否有卷标e2label /dev/sdb1 name
添加卷标两种方法扩大swap分区
第一种方法可以根据上面增加分区的步骤一样进行操作,这里主要记录一下使用swapfile文件增大swap分区的步骤。
mkdir /var/swap
新建swap目录chmod 700 /var/swap
设置目录权限dd if=/dev/zero of=/var/swap/file.swp bs=1024 count=3000
创建swp文件,大小为3MBmkswap /var/swap/file.swp
使文件可用vim /etc/fstab
写入配置文件free
查看分区swapon /var/swap/file.swp
启用swap分区free
再次查看分区磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
可分为三类限制:
操作步骤
vim /etc/fstab
,编辑配置文件,在挂载属性上加上标志userquota或grpquota,然后重新挂载mount -o remount /home
,或重新启动系统sudo init 6
;quotacheck -Cvuga
,会生成aquota.user、aquota.group两文件。quotaon 分区名称
;关闭配额功能,quotaoff 分区名称
;edquota username
编辑用户配额edquota -g groupname
编辑用户组配额edquota -t 设置宽期限
设置宽期限edquota -p 模版用户 复制用户1 复制用户2
quota username
查看用户的配额使用情况repquota -a
管理员查看配额信息备份几乎是Linux系统运维最频繁的工作了,不过大部分情况下,都是通过自动化脚本进行自动备份。
/etc
, /boot
, /usr/local
, /var
, /log
…/home
其实主要就是通过cp
和tar
命令
cp -Rpu
复制文件-p
保持文件原本属性-u
增量备份-R
循环复制scp
远程备份,类似cp命令tar -zcf /backup/sys.tar.gz /etc /boot
备份/etc , /boottar -ztf /backup/sys.tar.gz
查看备份包中的文件(不解包)tar -zxf /backup/sys.tar.gz
还原备份目录,其实就是解包tar -zxf /backup/sys.tar.gz -C ./backup
解压到指定目录backup
下tar -zxf /backup/sys.tar.gz etc/group
恢复指定文件tar -rf /backup/sys.tar /etc/file1 /etc/file2
追加文件到备份包中tar -uf /backup/sys.tar /etc/file
将修改过的文件做备份计划任务最常用的两个命令就是at
和crontab
,at
命令是一次性执行任务;crontab
是周期性运行作业。
格式:at [-f filename] time
,这里的time也就是时间分为两类:
hh:mm MM/DD/YY
now + n minutes
now + n hours
now + n days
实例
at 5:30pm
at now + 18minutes
at 17:30 1/11/11
接下来输入命令,输入完后ctrl+D保存任务。注意:命令一定要是绝对路径。
at -l
列举任务
at -d
删除任务配置文件
/etc/at.allow
允许用户列表/etc/at.deny
不允许用户列表作用:用于生成cron进程所需要的crontab文件;
格式:crontab {-l|-r|-e}
-l
显示当前的crontab-r
删除-e
编辑编辑规则,将知道的具体时间填上,不知道的填*
|| 分钟 || 小时 || 天 || 月 || 星期 || 命令/脚本 ||
|| 30 || 17 || * || * || 1-5 || /usr/bin/wall < x.txt ||
|| 45 || 17 || * || * || 1-5 || /sbin/shutdown -r now ||
|| */2 || 12-14 || * || 3-6,9-12 || 1-5 || 检测脚本 ||
上面第一例,每个周一到周五的17:30进行广播操作;第二例,每周一到周五17:45进行重启操作;第三例,3-6月和9-12月,每周一到周五,每隔2分钟进行脚本检测。
/usr/bin & /bin
可执行的命令/usr/sbin & /sbin
root可执行的的命令/proc
虚拟文件系统,存放当前内容镜像/dev
存放设备文件/lib
存放系统程序运行所需的共享库/lost+found
存放一些系统出错的检查结果/tmp
临时文件/etc
系统配置文件/var
存放经常发生变动的文件,比如邮件、日志等/usr
存放所有的命令、库、手册页等/mnt
临时文件系统的安装点/boot
内核文件及自带程序文件保存位置/usr/local
安装第三方软件默认路劲进程管理不得不介绍的四个命令,ps
、kill
、nice/renice
、top
.
查看进程的命令,非常强大哦。它有三种表达方式,具体可以参照man文档的description部分。
a
显示所有的用户u
显示用户名和启动时间x
显示没有控制终端进程-e
显示所有进程-f
显示完整格式常用命令
ps aux
or ps -ef
都是显示所有用户进程,只是不一样的表达方式ps -uU username
查看系统中指定用户执行的进程很有必要看一下ps命令的man说明文档,下面图片贴出文档中example部分内容。
这个命令也很常用的,杀死进程.
kill PID
根据进程号,直接终止进程kill -9 PID
强行关闭kill -1 PID
重启进程xkill
关闭图形程序killall 进程名
结束该进程改变进程的优先级,每一个进程都有一个优先级(也称nice值),其范围为[-20,19],最高到最低,注意-20是最高的哦,默认情况下,进程的优先级都是0,优先级高的进程会比较频繁的被调用运行。
nice
设定进程的优先级。格式:nice -n command
,eg. nice -n 19 dd if=/dev/cdrom of=~/mdk.iso
利用最低优先级创建一张cd的镜像,防止复制操作阻碍其他进程。
renice
更改用户的优先级。格式:renice -n pid
, eg. renice -5 777
提高777进程的优先级。
知道Windows下的任务管理器吧,这个命令就是命令行下的任务管理器。
很强大的命令,介绍下简要用法。
d
:指定刷新间隔c
:显示整个命令行u
:查看指定用户进程k
:终止执行进程h
:帮助对前一段时间学习Linux做一个总结,主要是整理笔记,写的可能比较乱,但是内容比较丰富,还是值得一看的。内容总共分为:用户账户、进程管理、计划任务、文件系统构成、磁盘管理、备份、Shell编程。内容都是比较基础,比较常用的,过一遍会加深你的印象。
Linux用户基本上分为下面三类:
用户配置文件储存在/etc/passwd
文件下,文件中每一行代表一个用户,每一列代表用户的基本信息,第一列代表用户的用户名,第二列代表用户的密码,密码使用*代替。
因为密码是通过加密后存储在/etc/shadow
文件下了,这个文件的权限只有root用户才能访问。
pwunconv
命令可以将密码回写到/etc/passwd
文件中,执行了这个密码后,再次进入/etc/passwd
文件中,就会发现第二列的*被一串字符串所替代,这就是加密后的密码。
pwconv
命令正好与上面的命令意思相反,它将密码从passwd中写入到shadow中,这个命令一般是在我们创建用户后就会自动执行。
同样的道理,用户组文件、用户组密码文件分别是/etc/group
和/etc/gshadow
。
用户配置文件:/etc/login.defs
、/etc/default/useradd
。
新用户信息文件:/etc/skel
,在创建新用户后,会自动将此文件夹中的内容拷贝到新用户的HOME目录下,作为新用户的配置文件。
登录显示信息:/etc/motd
成功后、/etc/issue
登录时。
上面说过密码存放在/etc/passwd
以及/etc/shadow
中,而这两个文件对其他用户均没有写权限。
普通用户用passwd
命令改密码,该命令的全路径是/usr/bin/passwd
,你可以通过ls -l /usr/bin/passwd
查看到该命令的权限,为-rwsr-xr-x
,可以看到有个s权限位。
这个s权限位的意思就是当其他用户在使用这个命令的时候,将暂时获得这个命令的所属用户的权限。换句话就是说当普通用户在使用passwd
命令的时候,会暂时获取root权限,从而可以改变/etc/passwd
里的密码值,达到改密码的效果。
那么,像上面那样的特殊权限位有哪些呢?又如何设置呢?
chmod u+s filename
chmod 4755 filename
chmod g+s filename
chmod 2755 filename
t
表示,你可以通过查看/tmp
目录的权限就知道了,那么,它的作用是什么呢?/tmp
目录的权限代表什么意思?
粘着位只是针对目录进行设置,大家知道/tmp
目录的权限为drwxrwxrwt
,意思就是什么人都具有读、写、执行的权限,那么,如果我建的文件或者目录被别人删了怎么办?所以,粘着位的作用就是:每个人在目录里都有读、写、执行的权限,但是只有自己可以删除自己创建的文件。
很神奇是不是?来看看怎么设置?
同样两种方式,chmod o+t dir
&chmod 1777 dir
,dir代表目录。
useradd -D
其实就是根据/etc/default/useradd
默认配置来创建的
usermod -G 组名 用户名
将用户加入用户组gpasswd -a 用户名 组名
将用户加入用户组groups
查看用户隶属那些用户组newgrp
切换用户组grpck
用户组配置文件检查chgrp
修改文件所属用户组vigr
编辑/etc/group
文件pwck
检测/etc/passwd
文件vipw
编辑/etc/passwd
文件id
查看用户详细信息finger
查看用户详细信息,有些Linux发行版默认不带此命令passwd -S
查看用户密码状态who
or w
查看当前登录用户信息 groupadd -g 888 webadmin
groupdel webadmin
groupmod -n apache webadmin
(将webadmin组名修改为apache)passwd -S username
passwd -l username
使普通用户以root的方式执行命令。
配置文件:/etc/sudoers
;
格式:用户名(组名) 主体地址=命令(绝对路径);
实例:sudoer文件中有编写规则说明,具体参照下图。
宿舍电脑Mac mini,通过路由上网,2兆带宽,2人用;公司电脑Windows 7 32位,通过代理服务器上网,固定IP。我有一个小需求,就是在上班的时候突然想到某个电影,想回去就看,能不能远程操作一下电脑提前下载完电影?省得回去跟舍友抢带宽,主要是宿舍没人上网,带宽闲着也是闲着嘛,嘿嘿。
答案是肯定的。
打开Mac电脑的设置,找到共享选项,进入,界面如下
可以看到Mac电脑的默认共享方式非常多,当然这里我们只用看屏幕共享这项,你会发现屏幕共享用的是VNC协议,这只是一种连接协议,姑且这么记住,就像ssh一样。接下来点击电脑设置,会弹出一个设置窗口,如图
两个选项都勾选,然后设置一个连接密码。记住密码,到时候连接的时候要用上的。Mac电脑上的设置就差不多完成了。接下来就是路由器的设置了,为什么要设置路由器呢?因为我说过,我在宿舍是通过路由器上网的,要让外网能够访问我的电脑就一定需要在路由器上设置一个转发规则。
进入路由器,这个我不想多讲了,还是上个图吧.
左侧进入转发规则,如图,
当然,不一样的路由,界面可能不一样,找到相关字样就可以了。
接下来就来设置转发规则了,还是先上图。
这里比较重要了,要好好记住了
好了,基本上,宿舍Mac电脑就准备就绪了。可以去公司了鼓捣Windows 7了。
远程连接就需要两台主机达成某种协议,而这里我们用的是VNC的一个软件,为什么用它呢?没有为什么,因为Mac电脑原生支持VNC的通信协议,那就只有委屈Windows啦,装上VNC Viewer客户端,就可以连上Mac了。
VNC Viewer for Windows,下载地址:VNC ,注意下载的版本,有32、64位之分。
HTTP–>80
SSH–>22
VNC–>5900
还有SMTP、POP3、FTP等等常用服务的默认端口都可以记住,实在记不住就问google和度娘也可以,其实常用的也没有多少,最起码比起咱们小时候背得文言文篇数要少得多吧。
这种上网方式非常蛋疼,不过也木有办法呀。记住在你要联网的软件上都设置上代理吧!!!
需要用到什么端口就设置哪个端口,一般对于远程连接就用到ssh 22端口或者vnc 5900端口。有时自己写个web应用什么的也可以自定义端口。