Linux

byobu startup

相信很多人都知道byobu,Ubuntu下很赞的终端管理工具,很方便的管理多个窗口,还支持窗口分屏,也支持多个窗口执行同样的命令(这点和cssh有一比),还可在服务器端保留你的工作状态,可以极大的提高效率。

byobu

让进程在后台运行,注销后而不退出,你或许知道nohup,但这个也是byobu的最基本功能之一,与nohup相比,byobu给人更熟悉的感觉。久而久之,我就喜欢上了,可是如何在VPS上开机/重启后自动执行指定命令呢?

code

配置相关的我看了不少资料,也尝试了不少。最后写了如下shell:

1
2
3
4
5
6
7
#!/usr/bin/env bash
# byobu
cd /root/
byobu new-session -d -n - "your command one"
byobu new-window -n - "your command ..."
byobu new-window -n - "your command ..."
byobu new-window -n - "your command ..."

这个脚本在登录后,执行下,确实能达到预想的效果,但是自动执行却不可以。。。

ssh

最后无奈之下使用了简单粗暴的办法,在/etc/rc.local中添加一行:
ssh -p22222 -i /root/.ssh/id_rsa root@localhost /etc/init.d/gshmu.sh

default shell

如果想ssh登录默认使用byobu,可以修改/etc/passwd中指定的默认shell。注意:默认的shell还有/bin/false/usr/sbin/nologindaemon专用的,禁止登录用的。还有一种/bin/rbash,改天有时间,容我细细道来。

END

程序猿都是有偏执的,预想的事情终于实现了,VPS重启后,登录上去的界面好熟悉。

robots.txt

中文名:一行代码,让客户侧设备远离搜索引擎魔爪
为了让搜索引擎更好地为我们服务,大家都对SEO有所耳闻吧。然而有时候,卖给客户的设备,并不希望搜索引擎能够搜索到……

历史

我们的设备不应该暴露在搜索引擎头条,但是这个真的出现过,我们公司同事内部发出来的,以及在某些漏洞信息平台上… 客户该不该让某些设备暴露在公网,我们先不予讨论,本文讨论的是:设备暴露在公网之后

robots.txt

我们需要告诉搜索引擎,不要爬我。robots.txt 早已是业界规范,更多信息: http://www.robotstxt.org/

nginx

1
location = /robots.txt {return 200 "User-agent: *\nDisallow: /\n";}

一行代码,需要放在合适的位置即可,配置好的示例:https://23.106.155.32/robots.txt

总结

针对有些设备被搜索引擎搜索到,可能给客户造成一定影响,特写此文,让我们的设备更专业。

lvs bug

lvs是网络负载均衡常用的一种方式,然而今天的重点并不是lvs,而是一个隐含的坑……

Error

打开网页报表页面,显示有问题。然后是(firefox+chrome)*2,四种模式访问都有问题!注:四种模式——乘2是使用隐私模式,no cache,no cookies …,这个是相对清空浏览器缓存一种优雅的方式,还有一种是不清空强制刷新Ctrl+F5方式。

Try VM again

一切正常,一切正常有没有。。。

add-ons

是插件作怪么,Firefox addons/chrome extensions,共同的插件没几个,晒图一张吧(仅Enable的插件):
suggest add-ons
既然说到了插件,说说优雅排查插件问题的方法(禁用插件重启),如图:
disable add-ons restart

浏览器debug,日志错误之类,此处略过半小时…

lvs

时间刚好,wanglei5来上班了,王哥来瞅瞅:你的web有没有lvs…
先是堡垒机前置机远程桌面,分别访问了两个不同地址,果然问题在这里。然后堡垒机登录有问题那台机器后台,上代码:

1
2
3
4
Last login: Mon Dec 28 17:57:45 2015 from 172.16.58.xx
touch: cannot touch `/var/log/history/20160129-root.log': Read-only file system
/usr/bin/chattr: No such file or directory while trying to stat /var/log/history/20160129-root.log
-bash: /var/log/history/20160129-root.log: Read-only file system

END

问题找到了,LVS后面两台机器一台出了点问题,奇葩问题给个奇葩解决方案吧。考虑到目前这个系统访问量使用量都很少,所以决定下来关闭lvs和一台web,外加一条转发规则,省点儿资源是点儿资源,何乐而不为。(本文晒了火狐浏览器积攒下的长的常用插件,和一些相对优雅的操作,需要自取。)最后感谢wanglei5,Best wishes!

ssh party

SSH你是不是每天都在用,ssh可是一大家,今天开派对,首先清点下:

1
2
3
4
$ ssh  # 双击Tab
ssh ssh-argv0 sshd ssh-import-id-gh ssh-keyscan
ssh-add ssh-askpass sshfs ssh-import-id-lp sshmitm
ssh-agent ssh-copy-id ssh-import-id ssh-keygen sshow

有没有惊呆,居然有这么多。。。

man

派对开场是man老师介绍了下出场的各位,这一大家果然各个身怀绝技啊。如果有什么不懂的,大家私下询问man老师吧,man老师为人好的没话说,除了讲一口地道的英语……

  • ssh vs sshd 黄金组合
  • ssh-keygen 私钥公钥对了,生成修改,不容小瞧
  • ssh-agent 私钥认证
  • ssh-add 添加私钥认证
  • ssh-copy-id 添加自己的公钥到指定主机,需要开启密码登录(首次)
  • ssh-import-id 在线批量添加公钥
  • sshfs fisesystem,通过ssh挂载文件
  • ssh-askpass 界面询问密码

例:首先生成公钥对,ssh-copy-id将公钥拷贝到某台机器上;ssh-add将私钥添加到agent,此处需要输入一次密码,然后再次使用私钥无需输入密码。在Linux下,私钥默认仅当前用户有读写权限,不符合这个权限的私钥是不被认可的。

添加同事公钥:$ cat ~/.ssh/pub/id.pub | ssh 10.7.14.39 'cat >> ~/.ssh/authorized_keys'

修改私钥密码:$ ssh-keygen -f .ssh/id_xxx -p

.ssh

  • authorized_keys 默认认证公钥文件,可修改
  • known_hosts 保存的hosts认证
  • rc 登录ssh是,会自动执行这个脚本。
  • config 如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat ~/.ssh/config
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h

Host 10.65.200.50
IdentityFile ~/.ssh/id_rsa
User root

Host 10.65.200.*
IdentityFile ~/.ssh/Identity
User root
Port 50002

Host *
User root
Port 22

首先是配置开启共享的长链接,默认设置4小时,好处是第二次连同一台设备基本秒连,还有scp已链接设备速度也会大大加快。支持通配符配置不同用户,不同端口,使用不同密钥,配置好后,只需要ssh ip 即可登录。

config 插曲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ cat .pip/pip.conf 
[global]
download_cache = ~/.pip/cache

$ cat .gitconfig
[user]
name = name
email = name@mail.com
[http]
# proxy = socks5://127.0.0.1:1080
proxy = https://127.0.0.1:8080
[https]
# proxy = socks5://127.0.0.1:1080
proxy = https://127.0.0.1:8080
[pull]
default = current
[push]
default = current
[alias]
last = log -1 HEAD
[color]
status = auto
diff = auto
branch = auto
interactive = auto
[core]
excludesfile = ~/.config/.gitignore
  • pip 启用了cache,第二次装同样的包,virtualenv虚拟环境装包,能快多少快多少
  • git 配置了默认用户,操作习惯,还有全局ignore,默认使用代理。

END

在这一家人的协助下,只要是网络可达的ip,只需要ssh ip 就可以登录,cssh 同时多个ip还可以一起登录,==为不折腾而战!== 注:对应配置windows下都有,xshell等工具密钥需要导出也是安全措施的一种。

chrome apk

跟大牛一起玩chrome,奔跑吧APK
chromeos-apk:Run Android APKs on Chrome OS, OS X, Linux and Windows. 把安卓应用放到PC玩,有没有心动呢?然后一个不好的消息是,越不标准的应用越容易崩溃,比如某信和某宝。

npm

Node.js 火了,npm和Node.js的关系,借用官方的话说:

“The npm command-line tool is bundled with Node.js. If you have it installed, then you already have npm too. If not, go download Node.js. ”

先装Node.js,这个不是不是本文重点,此处略过。

chromeos-apk

主角出场了:$ npm install chromeos-apk -g,用法很简单,$ chromeos-apk /path/to/file.apk,执行成功后会在当前目录生成一个文件夹,名字如com.app.android,根据我的经验需要加上--name com.xxx.android就是根据生成的文件夹名,我还习惯加上--scale参数。

APK

下载APK当然选择Google Play,配合下载的网页APK Downloader 即可下载谷歌市场应用,有人要为什么这么挑,因为这里的应用更加标准。举个简单的例子,你的微信经常会提醒更新,后台下载APK文件,而我去微信里面点击检查更新,会打开应用市场,这是看得见的区别。(如果还有问题,可以参考我2015-12-18的盟盟汇文章)

ARChon runtime

Download the runtime根据你的系统下载对应的版本,解压到某个目录。

chrome

建议使用最新的稳定版,打开chrome扩展页。开启开发者模式,点击load unpackkd extension,先加载前面解压的运行环境整个文件夹,然后加载你转换的APK的文件夹,然后点击运行… 大家都有民生的银行卡,我用民生的手机银行客户端为例,如图:

END

跟大牛有肉吃,至于问我为什么要这么大费周章,没人喜欢折腾,真的…… 只是,以前手机内存小,庙太小,容不下大神,再加上安卓那令人发指的唤醒链,有些应用不想往手机装。最后还有个原因是我用Linux,Linux下出名的通讯问题大家都听过吧,可惜是鹅厂应用太不标准了!!!

android feast

Android Feast
我的设备我做主,我的地盘我是老大……

SDK

adb(Android Debug Bridge),Win下面一般装个驱动,下载exe就可以,稍微全一点的下载个androidSDK。Ubuntu下几条命名就可以$ apt-get install ubuntu-device-flash phablet-tools
注:我的识别稍有问题,连手机前后执行两次lsusb,连手机后多出来的一行:”Bus 003 Device 008: ID 29a9:701a”,主要是找这个ID,还是上代码吧:

1
2
3
4
5
6
$ cat ~/.android/adb_usb.ini 
0x29a9

$ sudo adb devices
List of devices attached
37c0c28f device

adb有了,fastboot也有了,fastboot是标准的安卓刷机工具,然而你在中国,标准很多时候是标准不可用。

YunOS

我爸在家就看个电视,过分么? 广电总局敛财,YunOS作伥,然后仅以此部分献给我的两个周末。
后门是什么:我爸说,后门就是我看电视的应用默默的都被更新掉了。我要不要感谢下,让我爸都对后门理解的如此深刻。
闲话少叙,那个时候网上有个流传的压缩包,里面有个bat,我就下载打开瞅了瞅,GET新技能:

1
2
adb connect 0.0.0.0:5555
adb shell pm block com.wei.hu.zuo.chang

原来电视盒子可以用adb远程连接,pm是package manage,我就adb连上盒子,然后把升级等乱七八糟的该block的block掉,用电脑直接adb install了几个apk应用。电视又可以正常看了…

GET OUT

看了大约5天吧,一点都不消停,真是的… 害我连着两礼拜回家。
这回是很多应用都没有了,但是当贝市场还在,先看电视。第二天习惯性的先去盒子的官网看了看,厂家在云盘放出了ROM和刷机工具,这下没什么顾虑的了……
直接root,然后统统给我滚出去,电视淘宝什么鬼,走了您勒,不送。我尝试装了第三方桌面,自带的也没放过,然后果然被玩坏了……
软件问题都不是问题,双公头USB线,懒的出去买,快递太慢,直接自己动手,旧的线找两根剪断按颜色接上,找来以前用的带指示灯的充电头两个,测试了下(一个插上家用电源,另一个充电头灯正常亮表示没有问题,USB线是四根,两根电源两根数据,灯亮表示电源的两根没有错)。
然后正常刷机,下载rom稍微久点,刷机不足五分钟。
ROOT–>UNINSTALL–>INSTALL 两个市场,两三点播,两三直播,找了找没有设计用来替换的桌面,作罢。该滚的都滚了,以后永不升级,我的地盘我做主。

结果是:电视猫转换成了系统应用,整个默认桌面都是空荡荡的,装了个第三方桌面,唯一不足是home键没绑定,止戈为武,鸣金收兵。

JianGuo

“第三方预装应用都能卸载”,我真的想相信这句话,结果大家都知道,我想多了。只好要得可口自己动手,毕竟最近学习了不少新技能。
开启开发者模式,常用的命令如下:

1
2
3
4
adb shell ps
adb shell pm list package
adb shell pm block xx.xx.xx # before android 5.0
adb shell pm hide xx.xx.xx # android 5.0+

local shell权限不够,需要连上电脑,开启USBDebug,可以成功hide不想要的拉圾,如搜狗广告输入法。锤子以前内置触宝输入法,后面升级到2.5.0后内置了与之匹配的250输入法,我为此升级付出的代价是使用省电模式一天多。

中立

我不粉也不黑,但我想说点啥。。。

  • 安全中心不安全:锤子的安全中心,平心而论是下了功夫的,从短信联系人位置信息到联网,都可以直接管,然而有一条,锤子家的不管,锤子家的权限全开。锤子家定制的权限全开,搜狗输入法加个后缀变成定制的,权限全开,安全中心管不着。
    我想说的是,三权独立有点大,但一个小小手机敢不敢不这样……

  • 清理好玩么:左手清理右手充电宝,好玩么?安卓的诱导安装和唤起链我不想说,搜狗输入法我确定取消了启用,然而一次又一次被活动在后台,清理是为了测试唤醒么?

  • 农历是中文:中文外强制隐藏农历,多么鸡肋的设计… 要看农历的你还怕他看到地道的,谷歌英文日历农历就很地道,好的需求SE是多么的重要~

jar 甜点

最后给大餐加点料,View and control your android device on PCadb devices显示连接到设备后,从github上下载上述jar,然后java -jar androidscreencast-0.0.5.1S.jar
除了慢点,功能都有了,看到的java大牛,让梦想飞起来吧~

END

手机慢,电池不够用么? 这年头电池很不错了,谁能告诉我,明明能作出好东西,为什么没有真正做出来几个好东西…

a cup of vps

习惯了谷歌搜索,还真的离不开了… (注:本文更新过)

Buy VPS

购买个VPS吧,选了款便宜点的,bandwagon 19.9$/Y(支持支付宝付款),这个我是新来的,就不搬门弄斧了…
购买成功后,操作系统选Ubuntu16.04,和我现在用的一样,主要是方便,首次密码登录添加公钥,安卓可以使用JuiceSSH客户端。。。

shadowsocks

先装个服务吧,本着不折腾的折腾原则。

server

先启动个服务吧,脚本奉上:

1
apt-get update && apt-get -y install python-pip && pip install -U pip && pip install shadowsocks

安装完毕,可以直接用命令ssserver启动服务,推荐写个json,参数不懂问man老师,或者帮助,官网文档都可以。

1
2
3
4
5
6
7
8
9
10
11
echo '{
"server":"0.0.0.0",
"server_port":88,
"password":"yourpassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
' > /etc/shadowsocks.json

ssserver -c /etc/shadowsocks.json

至此服务端启动OK,其中端口和密码自己设置。

client

安装方式一样,只是启动的时候用sslocal命令,可以直接指定参数启动,也可以写个配置文件。
推荐火狐浏览器,因为火狐浏览器有单独的网络配置,而chrome等用的系统代理配置。

nginx

大家对nginx和gunicorn(uwsgi的一种)一定不陌生,其中有个名词叫反向代理,我的理解nginx反向代理是,自己有的(像js,css之类的)直接给你,没有的,去找gunicorn取来后给你。

Apply

“Nginx, Show me google homepage…” 没有取了来给我,哈哈哈 :)
不要想太复杂,Github上有现成的(我不喜欢编译,但偶尔编译下还是可以滴),注有个组建我更新了下,然后configure命令修改后是下面这样的:(前两个版本号稍有更新)

1
2
3
4
5
6
7
8
9
10
11
apt-get -y install build-essential git gcc g++ make && mkdir wen.lu && cd wen.lu && git clone https://github.com/cuber/ngx_http_google_filter_module && git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module && wget "http://nginx.org/download/nginx-1.10.2.tar.gz" && tar xzvf nginx-1.10.2.tar.gz && wget "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz" && tar xzvf pcre-8.39.tar.gz && wget "http://zlib.net/zlib-1.2.8.tar.gz" && tar xzvf zlib-1.2.8.tar.gz &&  wget "https://www.openssl.org/source/openssl-1.1.0c.tar.gz" && tar xzvf openssl-1.1.0c.tar.gz && cd nginx-1.10.2 && \
./configure \
--prefix=/opt/nginx-1.10.2 \
--with-pcre=../pcre-8.39 \
--with-openssl=../openssl-1.1.0c \
--with-zlib=../zlib-1.2.8 \
--with-http_ssl_module \
--add-module=../ngx_http_google_filter_module \
--add-module=../ngx_http_substitutions_filter_module && \
make && \
make install

下来修改下配置,修改的地方如下:

1
2
3
4
5
resolver 8.8.8.8;
location / {
google on;
google_language "ca";
}

然后启动ngins,访问[My VPS HIDE],久违的谷歌出现了。
http支持了,https如今也已经支持,使用Let’s encrypt证书,使用证书需要域名,免费域名申请的较晚,所以https及证书支持较晚。

the End

all in one last. 感谢阅读,我本地代理默认监听0.0.0.0,局域网的小伙伴有福了哈。

advanced linux

本文介绍几个Ubuntu进阶的操作。

先晒晒我信攥的电脑

  • CPU:E3-1231 V3 (3.4GHz*8 志强四核八线程)
  • 内存:Kingston 8G (骇客神条 1866MHz)
  • 主板:ASUS B85-PLUS R2.0
  • 显卡:NVIDIA GeForce GT 730

CPU,内存没得说,显卡很一般,Linux用完全足够了,如果想超频主板可用Z97K,我不超频也足够了

显卡驱动

志强CPU不集成GPU,所以需要独立显卡,显卡驱动是避免不了的。更多关于显卡的介绍,推荐

官方闭源驱动

官网按型号下载驱动,然后进入命令行(tty1-6),关闭Xorg,sh装驱动,然后启动Xorg。

1
2
3
sudo service lightdm stop
sudo sh NVIDIA-Linux-x86_64-346.35.run
sudo service lightdm start

包管理器直接装

sudo apt-get install nvidia-331 nvidia-prime nvidia-settings
331是我装时候仓库中最新的。

装完后,不测试下?

工具: glxgears
奇怪,人家都说是评分多少万,为啥我的几乎定在60FPS? 原来是设置里开了,垂直同步,取消后评分正常。

GRUB2 引导

(Ubuntu 14.04下)grub引导选项主要是由/boot/grub/grub.cfg控制的,不过这个文件是自动生成的,我们一般编辑/etc/default/grub,然后通过命令sudo update-grub应用改动。

常用选项

  • 启动顺序 GRUB_DEFAULT 默认是0
  • 延时时间 GRUB_TIMEOUT 就是显示grub菜单的时间(单系统默认不显示,开机按Shift即可。)
  • 想开机进命令行修改 GRUB_CMDLINE_LINUX_DEFAULT="text"
  • 添加内核参数 GRUB_CMDLINE_LINUX="" 添加你想加的参数,如reboot=a

无论修改什么,都别忘了修改后更新grub!

新内核

说到内核,你知道你的内核版本么?还记得命令uname -r吧。

编译内核

我编译过内核,那是因为第一次主板有问题,关机后自动重启,我由于设备教新,所以怀疑驱动等问题。按照wiki我尝试修改了CPU选项和电源选项,不过后来确认是主板问题,跑华硕售后,确认主板有问题,然后换了主板。我不敢大言不惭教大家编译内核,我想说的是新内核源里就有,用新内核不一定需要自己编译。还有我想说的是编译过程比较久,我3.4GHz*8的主频,需要1h这么久。

装新内核

就不教大家装包了,大家都会。不过我想提醒大家的是,装新内核时有几个包需要统一装,不要漏了哪个。

apt-get install linux-headers-x.xx \
        linux-headers-x.xx-generic \
        linux-image-x.xx-generic \
        linux-image-extra-x.xx-generic```
四个包,x.xx是版本号,自行替换。

目前源里版本更新到3.16.0-31了,Linux内核最新版本已经到4.0了,告诉大家个好消息,4.0版本以后,Linux再也不要求大家重启了,厌倦了Windows反复重启的可要牢记哦。

## 总结
最后再次提醒大家修改grub设置后,不要忘记update-grub哦。

learn linux

许多尝试过Linux过的,说起Linux总是一堆问题,外加一堆不习惯。我厌倦了Windows,尤其是中国特色下的 Windows,厌倦了杀毒软件,厌倦了盗版软件,所以决定换Linux。在换Linux的过程中,不能说没有问题,但基本是一帆风顺的,所以计划写本文。

How to learn Linux?

说实话,我学Linux(Ubuntu)并不久,不敢妄言怎么去学Linux,只是分享下我是怎么学Linux的。

No VMs

不要用虚拟机,也不建议刚装Linux,在Linux下装虚拟机装Windows。虚拟机的性能会大打折扣,虚拟机下优盘挂载、共享文件、屏幕大小等也不是一开始就合适的,所以不建议使用虚拟机。

Ubuntu支持wubi.exe,但我推荐最好是全新安装,安装一个系统最好,双系统也还好。

Habit

不要说什么不习惯,我想说和Windows不一样就对了,本身就不是Windows。声明下,不要提到Linux就是命令行,图形界面已经很成熟了。Linux下可以说没有不能改的,同时Linux发行版众多,和Windows习惯相同的也是有的。

Install

我推荐全新安装Linux,但是安装盘有时候并不是那么好制作,Windows下有名的工具UltraISO,并不能制作可用的Ubuntu启动U盘。不过制作好的Linux LiveCD功能可是相当强大的,Windows下工具也是有的:UNetbootin && Live USB Creator

看到这里,我建议有机会搞个LiveCD启动下玩玩。(注意备份资料,误操作全新安装会丢失硬盘数据),进入Linux后很多安装都是图形化的(如Ubuntu,SUSE,Debaian,Fedora,LinuxMint…),保留以前系统的,务必选择高级,自定义分区,不会破坏现有系统和引导的。

Guide

学习Linux,最好有本书作为指导,指导方向。版本选择可以选和书一致的,不过新几个版本也没有问题。建议:用长期支持的稳定版本!

SoftWare

软件安装尽量直接用软件中心的图形话界面,初学请避免编译安装。编译安装很好很强大,但是有不少人死在了无尽的编译中。

Linux下软件很丰富,可是你用的不一定有,有些游戏真的不能玩,但是Linux下有游戏,有不少游戏。举个例子,迅雷没有,可是同类的下载软件有一堆…

QQ

很多没有QQ就活不了的,我想说:你想用的QQ真不怎么有,虽说Linux下有解决方案,可是问题不是Linux,问题是永远不会是第一腾讯!!!

Linux下最直接的是WebQQ, 然后是Pidgin+lwqq插件,然后还有Wine和收费版的Wine:CrossOver

总结

想学Linux的就勇敢去学,失败的人总是在找借口,成功的人总是在找方法。

mailcap

Tencent === Trash,微云下载的文件总是用gedit打开,firefox如是说。有谁能想到,腾讯微云下载的文件有着一样错误的Content-Type: "application/octet-stream"

The Way to fix it

Ubuntu 下,命令行执行:

1
echo 'application/octet-stream; nautilus --no-default-window --no-desktop %s; test=test -n "$DISPLAY"' >> ~/.mailcap

其实就是向家目录下.mailcap文件追加上述命令单引号内中的内容。(文件不存在则新建)

reason

微云下载文件时,HTTP Response headers,中使用了不是Trash不可能使用的Content-Type: "application/octet-stream",这是什么鬼文件,系统说他不认识,你试试gedit吧。

上面的解决方法是,application/octet-stream类型的文件用nautilus打开(在文件夹中显示),之所以没有定义到确定的应用,因为我常用的有zip和pdf两种,只好折中使用nautilus了。

总结

firefox中下载的文件总是用gedit打开,我气愤不止一次了。我用Linux,为什么用QQ,因为有人用QQ,为什么是微云,因为有用QQ发的文件,我只好借用微云,然后浏览器下载下来。

感谢IRC: Cork