linuxtogo
‘壹’ 新买的联想台式电脑linux系统怎么进BIOS
开机时屏幕上有显示的,一般是按下电源开关就开始不停的按F2或ESC或DEL,跟操作系统无关,只跟主板有关。
电源键按下后立即按PAUSE暂停,然后拍照发个照片上来,手把手教你。
‘贰’ Linux中的kill -s命令的意思是可以发送指定的信号哈,但信号通常是:TREM和HUP等等
有-s,下面两种写法都对:
kill -s 信号名 进程号
kill -信号名 进程号
Usage:
kill pid ... Send SIGTERM to every process listed.
kill signal pid ... Send a signal to every process listed.
kill -s signal pid ... Send a signal to every process listed.
kill -l List all signal names.
kill -L List all signal names in a nice table.
kill -l signal Convert between signal numbers and names.
通过kill -l 可以看到所有信号名
‘叁’ linux 内核4.9.11如何使用热拔插
在Linux系统中,当系统配置发生变化时,如:添加kset到系统;移动kobject,一个通知会从内核空间发送到用户空间,这就是热插拔事件。热插拔事件会导致用户空间中相应的处理程序(如udev,mdev)被调用,这些处理程序会通过加载驱动程序,创建设备节点等来响应热插拔事件。
操作集合
Structkset_uevent_ops{
int(*filter)(structkset*kset,structkobject*kobj);
constchar*(*name)(structkset*kset,structkobject*kobj);
int(*uevent)(structkset*kset,structkobject*kobj,
structkobj_uevent_env*env);
}
当该kset所管理的kobject和kset状态发生变化时(如被加入,移动),这三个函数将被调用。
Filter:决定是否将事件传递到用户空间。如果filter返回0,将不传递事件。
Name:负责将相应的字符串传递给用户空间的热插拔处理程序。
Uevent:将用户空间需要的参数添加到环境变量中。
int(*uevent)(structkset*kset,
structkobject*kobj,/*产生事件的目标对象*/
char**envp,/*一个保存其他环境变量定义(通常为NAME=value的格式)的数组*/
intnum_envp,/*环境变量数组中包含的变量数(数组大小)*/
char*buffer,intbuffer_size/*环境变量被放入的缓冲区的指针和字节数*/
);/*返回值正常时是,若返回非零值将终止热插拔事件的产生*/
实例源码:temp.rar
点击(此处)折叠或打开
/**
*热插拔事件
*Lzy2012-7-27
*/
#include<linux/device.h>
#include<linux/mole.h>
#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/string.h>
#include<linux/sysfs.h>
#include<linux/stat.h>
#include<linux/kobject.h>
static struct attribute test_attr=
{
.name="kobj_config",
.mode=S_IRWXUGO,
};
static struct attribute*def_attrs[]=
{
&test_attr,
NULL,
};
ssize_t kobj_test_show(struct kobject*kobject,struct attribute*attr,char*buf)
{
printk("Have show --> ");
printk("attrname: %s. ",attr->name);
sprintf(buf,"%s ",attr->name);
return strlen(attr->name)+2;
}
ssize_t kobj_test_store(struct kobject*kobject,struct attribute*attr,constchar*buf,size_t size)
{
printk("Have store --> ");
printk("write: %s. ",buf);
return size;
}
static struct sysfs_ops obj_test_sysops=
{
.show=kobj_test_show,
.store=kobj_test_store,
};
void obj_test_release(struct kobject*kobject)
{
printk("[kobj_test: release!] ");
}
static struct kobj_type ktype=
{
.release=obj_test_release,
.sysfs_ops=&obj_test_sysops,
.default_attrs=def_attrs,
};
staticintkset_filter(struct kset*kset,struct kobject*kobj)
{
//intret=0;
//struct kobj_type*ktype=get_ktype(kobj);/*得到属性类型*/
//ret=(ktype==&ktype_part);
printk("Filter: kobj %s. ",kobj->name);
return 1;
}
staticconstchar*kset_name(struct kset*kset,struct kobject*kobj)
{
static char buf[20];
/*struct device*dev=to_dev(kobj);
if(dev->bus)
return dev->bus->name;
elseif(dev->class)
return dev->class->name;
else
*/{
printk("Name kobj %s. ",kobj->name);
sprintf(buf,"%s","kset_name");
}
return buf;
}
staticintkset_uevent(struct kset*kset,struct kobject*kobj,struct kobj_uevent_env*env)
{
inti=0;
printk("uevent: kobj %s. ",kobj->name);
while(i<env->envp_idx)
{
printk("%s. ",env->envp[i]);
i++;
}
return 0;
}
static struct kset_uevent_ops uevent_ops=
{
.filter=kset_filter,
.name=kset_name,
.uevent=kset_uevent,
};
struct kset*kset_p;
struct kset kset_c;
staticint__init kset_test_init(void)
{
intret=0;
printk("kset test init! ");
/*创建并注册 kset_p*/
kset_p=kset_create_and_add("kset_p",&uevent_ops,NULL);
kobject_set_name(&kset_c.kobj,"kset_c");
kset_c.kobj.kset=kset_p;/*添加 kset_c 到 kset_p*/
/*对于较新版本的内核,在注册 kset 之前,需要
*填充 kset.kobj 的 ktype 成员,否则注册不会成功*/
kset_c.kobj.ktype=&ktype;
ret=kset_register(&kset_c);
if(ret)
kset_unregister(kset_p);
return ret;
}
static void __exit kset_test_exit(void)
{
printk("kset test exit! ");
kset_unregister(&kset_c);
kset_unregister(kset_p);
}
mole_init(kset_test_init);
mole_exit(kset_test_exit);
MODULE_AUTHOR("Lzy");
MODULE_LICENSE("GPL");
‘肆’ linux下怎么安装Go开发环境
一、Go安装使用
1、下载Go源码包
https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
上传到/usr/local/src目录下
2、编译安装Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/
#注:必须使用root账户或者使用sudo来解压缩Go源码包
3、设置PATH环境变量,添加/usr/local/go/bin到环境变量
export PATH=$PATH:/usr/local/go/bin
4、安装到自定义位置
Go二进制文件默认安装到/usr/local/go,但是可以安装Go工具到不同的位置,可以自行定义,只需要设置正确的环境变量。
例如,安装Go到家目录下,必须添加环境变量到$HOME/.profile
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注:安装Go到其他目录时,GOROOT必须设置为环境变量
5、检查是否正确安装程序
通过设置一个工作区和建立一个简单的程序,检查是否正确安装了一个简单的程序。创建一个目录包含您的工作空间,例如/data/work,并设置GOPATH环境变量指向的位置。
export GOPATH=/data/work
#如果不存在/data/work,需要新建
然后,在你的工作内创建src/github.com/user/hello,如果使用github,可以使用自己的用户名代替user,在hello目录下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}
#使用go编译hello.go
go install github.com/user/hello
#上面的命令讲名叫hello(or hello.exe)的程序放到你的工作区内,执行下面命令,会得到输出结果。
$GOPATH/bin/hello
hello,world!
#当出现hello,world!表明Go已经安装成功可以工作。
二、Go工作区介绍
1、机构组织代码概述
Go语言程序通常将所有的代码保存在一个工作区中。
工作区包含许多版本控制库(由Git管理)。
每个存储库包含一个或多个包。
每个包由一个或多个在一个目录中的源文件组成。
一个包的目录的路径决定其导入路径。
注:同于其他的编程环境中,每一个项目都有一个独立的工作区且工作区是紧密联系在一起的版本控制库。
2、工作区介绍
工作区是一个目录层次结构,它的根目录有三个目录:
src 包含Go源文件
pkg 包含对象和包
bin 包含可执行命令
Go工具创建源码包并安装二进制文件到pkg和bin目录下
src目录通常包含多个版本控制库(如Git或Mercurial),跟踪一个或多个源包的开发。
下面展示一个好的工作区的例子:
bin/
hello # command executable
outyet # command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a # package object
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...
上面的属性图展示了一个包含两个存储库(example和image)的工作区,example 存储库包含两个命令(hello,outyet),image库包含bmp包和几个其他的包。
一个典型的工作区包含包含许多软件包和命令的多个源库。大多数程序员将所有的源代码和依赖关系保存在一个工作区中
3、GOPATH环境变量设置
GOPATH环境变量指定工作区的位置。它很可能是唯一的环境变量,代码开发时需要设置。
开始,创建一个工作区目录并设置相应的gopath。您的工作区可以位于任何你喜欢的地方,但我们将在这个文档中使用/data/work。请注意,这不能是您的“Go安装”路径相同。
mkdir -p /data/work
export GOPATH=/data/work
为了方便。添加工作区的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、导入路径
一个导入路径是唯一标识一个包的字符串。一个包的导入路径对应于它在工作区内或远程存储库中的位置。
从标准库的软件包中给出了短的导入路径等。对于您自己的包,您必须选择不可能和未来添加到标准库或其他外部库的基础路径冲突的路径。
注意,你不需要将你的代码发布到一个远程存储库之前,你可以建立它。这只是一个很好的习惯来组织你的代码,如果你有一天会出版它。在实践中,你可以选择任何任意的路径名称,只要它是唯一的标准库和更大的去生态系统。
我们将使用github.com/user作为我们的基本路径。在您的工作区中创建一个目录,以保持源代码:
mkdir -p $GOPATH/src/github.com/user
5、第一个项目
编译并运行一个简单的程序,首先选择一个包的路径(我们将使用github.com/user/hello)和创建在您的工作区相应的软件包目录:
mkdir $GOPATH/src/github.com/user/hello
创建名叫hello.go的文件,上面创建过,此处略过。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello
或者:
hello
如果你使用的是一个源代码管理系统,现在是一个很好的时间来初始化一个存储库,添加文件,并提交你的第一次更改。再次,这一步是可选的:您不需要使用源代码管理来写代码。
cd $GOPATH/src/github.com/user/hello
git init
Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/
git add hello.go
git commit -m "first commit"
[master (root-commit) bbfb477] first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目录下创建一个名为reverse.go文件中有下列内容:
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
使用go build测试包的编译
$ go build github.com/user/stringutil
如果当前位置源码包目录,只需要:
go build
上面操作并不会产生一个输出文件,必须使用go install,把包和对象输出到工作去的pkg目录内
确认stringutil包创建完成后,修改原始hello.go,使用stringutil包:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))
}
无论使用go安装包还是二进制文件,所有相关的依赖都会自动安装。所以当你安装hello程序时:
$ go install github.com/user/hello
对应的stringutil包会自动安装好。
执行新的hello程序,可以看到消息已经被反转
# hello
Hello, Go!
完成上面操作之后,工作区应该为:
├── bin
│ └── hello # command executable
├── pkg
│ └── linux_amd64 # this will reflect your OS and architecture
│ └── github.com
│ └── user
│ └── stringutil.a # package object
└── src
└── github.com
└── user
├── hello
│ └── hello.go # command source
└── stringutil
└── reverse.go # package source
注意:go install会把库文件stringutil.a放到pkg/linux_amd64下边(目录结构跟源代码结构一样)。这样可以go命令可以直接找到对应的包对象,避免不必要的重复编译。linux_amd64是为了根据操作系统和你的系统架构交叉编译。
所有Go可执行程序都通过静态方式链接在一起,所以在运行时是不需要相关的包对象(库)。
7、包命令
所有的Go源代码都以下面的语句开始:
package name
其中name就是包引用默认的名称,一个包中的所有文件必须使用同一个包名,可执行命令必须是main。
一个二进制文件下所有的包名不需要唯一,但是引用路径必须唯一
8、测试
Go自带了一个轻量级的测试框架,由go test和testing包组成。
可以通过新建xx_test.go写一个测试,其中包含若干个TestXXX函数。测试框架会自动执行这些函数;如果函数中包含tError或t.Fail, 对应的测试会被判为失败。
添加一个针对stringutil的测试文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下内容:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
#通过go test测试
# go test github.com/user/stringutil
ok github.com/user/stringutil 0.002s
#同样的,在包文件夹下可以忽略路径而直接执行go test
[root@zabbix stringutil]# go test
PASS
ok github.com/user/stringutil 0.002s
9、远程包
包的引用路径用来描述如何通过版本控制系统获取包的源代码。go工具通过引用路径自动从远程代码仓库获取包文件。比如本文中用的例子也对应的保存在github.com/golang/example下。go可以通过包的代码仓库的url直接获取、生成、安装对应的包。
[root@zabbix ~]# go get github.com/golang/example/hello
[root@zabbix ~]# $GOPATH/bin/hello
Hello, Go examples!
如果工作区中不存在对应的包,go会将对应的包放到GOPATH环境变量指明的工作区下。(如果包已经存在,go跳过代码拉去而直接执行go install)
建议详细看一下http://www.linuxprobe.com/set-go-env.html这个,有图文
‘伍’ 如何在Mac下显示Finder中的所有文件
在Unix下工作,你可能需要处理一些“特殊“文件或文件夹,例如/usr,/bin,etcf,或一些"dot files"(如.bash_profile)。但是Linux/Unix系统处于安全、帐户权限等原因的考虑,普通帐户在正常情况下是看不到这些文件或文件夹的。
对于一般的查看文件夹,可以在Finder中直接使用"Go | Go to folder"命令,快捷键 Shift+Command+G 可能会更加方便。笔者经常使用它。如果你还没有使用过这个命令,不妨现在试试打开“/usr/local”。方法1的缺陷正如它的名字“Go to folder"──它只能打开文件夹,不能查看操作隐藏文件。
defaults write com.apple.Finder AppleShowAllFiles NO回车,重启Finder.如果想还原成默认的隐藏,重复上面的步骤,把命令中的YES改为NO即可,即运行!
‘陆’ linux 运行一个可执行文件,出现 line 1: syntax error: unexpected "(" 的错误
出现 line 1: syntax error: unexpected "(" 的错误说明可执行脚本出现异常,具体错误在脚本的第一行,是语法错误,“(”不是预期的。
题主需要检查脚本中的实际内容,根据具体内容去排除问题,脚本才能正确执行。
(6)linuxtogo扩展阅读
linux下shell脚本的基本语法结构介绍:
shell脚本开头以#! /bin/bash表示说明这是一个shell脚本
脚本文件的名字是以.sh结尾的,用于区分这是一个shell脚本文件
shell执行方法有两种,一种是给予权限,使用sh shell.sh或./shell.sh的方式,一种是bash shell.sh的方式
查看脚本执行过程 -x
[root@localhost src]# sh -x 1.sh + echo 123
123
exit
查看脚本语法是否有错误 -n
[root@localhost src]# sh -n 1.sh 1.sh: line 5: syntax error: unexpected end of file
‘柒’ 谁能告诉我,英语写信的格式(加分)
1、信头(Heading)
指发信人的姓名(单位名称)、地址和日期,一般写在信纸的右上角。一般公函或商业信函的信纸上都印有单位或公司的名称、地址、电话号码等,因此就只需在信头下面的右边写上写信日期就可以了。
英文地址的写法与中文完全不同,地址的名称按从小到大的顺序:第一行写门牌号码和街名;第二行写县、市、省、州、邮编、国名;然后再写日期。标点符号一般在每一行的末尾都不用,但在每一行的之间,该用的还要用,例如在写日期的时候。
日期的写法,如1997年7月30日,英文为:July 30,1997(最为普遍); July 30th,1997;30th July,1997等。1997不可写成97。
2、信内地址(Inside Address)
在一般的社交信中,信内收信人的地址通常省略,但是在公务信函中不能。将收信人的姓名、地址等写在信头日期下方的左角上,要求与对信头的要求一样,不必再写日期。
3、称呼(Salutation)
是写信人对收信人的称呼用语。位置在信内地址下方一、二行的地方,从该行的顶格写起,在称呼后面一般用逗号(英国式),也可以用冒号(美国式)。
(1)写给亲人、亲戚和关系密切的朋友时,用Dear或My dear再加上表示亲属关系的称呼或直称其名(这里指名字,不是姓氏)。例如:My dear father,Dear Tom等。
(2)写给公务上的信函用Dear Madam,Dear Sir或Gentleman(Gentlemen)。注意:Dear纯属公务上往来的客气形式。Gentlemen总是以复数形式出现,前不加Dear,是Dear Sir的复数形式。
(3)写给收信人的信,也可用头衔、职位、职称、学位等再加姓氏或姓氏和名字。例如:Dear Prof. Tim Scales, Dear Dr.John Smith。
4、正文(Body of the Letter)
位置在下面称呼语隔一行,是信的核心部分。因此要求正文层次分明、简单易懂。和中文信不同的是,正文中一般不用Hello!(你好!)
正文有缩进式和齐头式两种。每段书信第一行的第一个字母稍微向右缩进些,通常以五个字母为宜,每段第二行从左面顶格写起,这就是缩进式。
但美国人写信各段落往往不用缩进式,用齐头式,即每一行都从左面顶格写起。商务信件大都采用齐头式的写法。
5、结束语(Complimentary Close)
在正文下面的一、二行处,从信纸的中间偏右处开始,第一个词开头要大写,句末用逗号。不同的对象,结束语的写法也不同。
(1)写给家人、亲戚,用Your loving grandfather,Lovingly yours,Lovingly等;
(2)写给熟人、朋友,用Yours cordially,Yours affectionately等;
(3)写业务信函用Truely yours(Yours truely),Faithfully yours(Yours faithfully)等;
(4)对上级、长辈用Yours obediently(Obediently yours),Yours respectfully(Respectfully yours)等。
6、签名(Signature)
低于结束语一至二行,从信纸中间偏右的地方开始,在结束语的正下方,在签完名字的下面还要有用打字机打出的名字,以便识别。职务、职称可打在名字的下面。当然,写给亲朋好友的信,就不必再打了。
7、附言(Postscript)
一封信写完了,突然又想起遗漏的事情,这时用P.S.表示,再写上遗漏的话即可,要长话短说。通常在信末签名下面几行的左方,应于正文齐头。
注意:在正式的信函中,应避免使用附言。
8、附件(Enclosure)
信件如果有附件,可在信纸的左下角,注上Encl:或Enc:,例如:Encl:2 photos(内附两张照片)。如果福建附件不止一项,应写成Encl:或Encs。
我们有时可看到在称呼与正文之间有Re:或Subject:(事由)字样。一般在信纸的中间,也可与“称呼”对齐。还应在底下加横线,以引起读信人的注意,使收信人便于在读信之前就可了解信中的主要内容。事由一般在公务信函中使用,也可以省略。
‘捌’ Linux不能够拨号上网
1、LINUX下拨号可以用在操作系统上安装拨号软件rp-pppoe,之后设置再上网,这里使用使用教程http://kokoc365.blog.163.com/blog/static/10679692008104111732488/
2、另外,还可以通过设置路由器,来实现计算机自动上网(即可以不拨号)。
PS:在xp里面安装了虚拟机【Linux】,Linux自动拨号,物理机不拨号不是很明白……
‘玖’ win7有什么新功能
在Windows 7中,集成了一个名为Win RE(Windows Recovery Environment,Windows恢复环境)的开机修复功能。利用该功能,当系统出现问题而不能启动的时候,我们可通过该功能让系统进行自动修复。
1、系统修复
当系统不能正常启动时,在开机时按下F8键(通常在系统启动失败后会自动跳到该界面)可进入Windows 7“高级启动选项”菜单。和此前的系统不同,Windows 7的高级启动菜单项目要多一些,其中第一项“修复计算机”就是所谓的Win RE。选中该项后按回车键,可进入系统修复向导。在此不需要用户的过多参与,只需在修复时依次确认三次其它的事情交给系统,大概经过10分钟左右(与系统安装的软件和硬件性能相关)的时间系统就会修复完毕。
2、功能迁移
当然,使用Windows 7的用户还不是很多,不过没关系我们可将该功能迁移到Vista中,让其也具备该功能。
首先是复制相关文件。找一台已安装了Windows 7的计算机,依次进入“C:Recovery30f6d532-e054-11dd-997b-e25e3f2c6222”文件夹(C为Windows 7的系统分区,至于30f6d532-e054-11dd-997b-e25e3f2c6222不同的计算机会有不同。另外,Recovery为隐藏文件夹需要设置显示所有系统文件才能看到)。
在目录下有两个文件Winre.wim和boot.sdi,其大小分别为139MB和3.0MB(不同的版本大小略有不同),将这两个文件通过移动设备拷贝到安装有Vista的电脑的非系统分区(比如D分区),然后将其文件属性设置为隐藏、系统、只读属性。
其次创建一个批处理文件,通过该批处理文件在系统启动菜单中添加名为“Windows RE修复计算机”的启动项。加入我们刚才拷贝的系统修复文件Winre.wim、boot.sdi在D盘根目录下,可拷贝下面的代码将其保存为fix.cmd。
(9)linuxtogo扩展阅读:
Windows 7和Windows Vista一脉相承有不少相同的系统组件,但是这些组件在Windows 7中功能更加丰富,性能得到了提升。从中选择几个系统工具,进行一番体验。
1、可自定义的磁盘碎片整理
磁盘碎片整理从Windows 98就有了,但是windows版本的更新换代并没有对其做更大的改进,其磁盘整理的效率确实太低了。Windows 7中的磁盘碎片整理的性能有了很大的提升,并且用户可根据需要进行自定义。
2、功能更加完善的系统还原
系统还原是Windows系统的标准组件,在Windows Vista中系统还原比较简单,可供设置的选项比较少,不能满足某些特殊需要。而在Windows 7中系统还原有了较大的改进,方便了用户自定义的需求。
3、问题反馈录像机
Windows用户对于微软的错误报告并不热心,因为我们的报告的问题往往有去无回。在Windows Vista中微软对用户报告的问题给予了必要的重视,会对用户反馈解决方案。在Windows 7中微软添加了一个名为“问题反馈录像机”的工具,该工具应该是微软为方便用户反馈问题而设计的。
4、其他有趣的工具
另外,在Windows 7中对以前的某些工具进行了改进还增加了一些新的工具。通过笔者的使用体验,这些工具比较实用而且很有趣。
参考资料:网络-win7新功能
‘拾’ 从网上下载的doc文件怎么在手机上打开
安装手机版的office软件啊 不过貌似只有智能机才有手机版的office